誰かが交換機能が動作しない理由を教えてください。 main(replace、1,2、list)と呼ばれます。ノードを検索し、ノードの値が1の場合は、値2の新しいノードを作成して置換し、最初のノードに割り当てられたメモリを解放する必要があります。私はあなたのreplace()
機能に問題のカップルがあります=(c - リンクされたリスト機能を置き換えます。
typedef struct iNode
{
int myInt;
struct iNode* next;
} IntNode, *IntNodePtr;
IntNodePtr insert(int i, IntNodePtr p)
{
IntNodePtr newp = malloc(sizeof(struct iNode));
newp->myInt = i;
newp->next = p;
return newp;
}
IntNodePtr delete(int i, IntNodePtr p)
{
/* End of list check */
if(p == NULL)
return NULL;
/* Check if current node is the one to delete */
if(p->myInt == i)
{
IntNodePtr temp;
temp = p->next;
free(p);
return temp;
}
p->next = delete(i, p->next);
return p;
}
IntNodePtr replace(int i, int j, IntNodePtr p)
{
if(p == NULL)
return NULL;
if(p->myInt == i)
insert(j, p->next);
free(p);
p->next = replace(i, j, p->next);
return p;
}
リストの最初のリンクを常に 'replace'関数に渡す必要があることに注意してください。そうしないと、リストが破られてしまいます。これはあなたがこれまでに持っていた2つか3つの答えにも当てはまります。私はおそらくそれが仮定されていることを知っているが... – JimR