может ли кто-нибудь сказать мне, почему функция замены не работает? говорят, что main называется replace (1,2, list). Он должен искать узлы, и если значение узла равно 1, оно должно сделать новый узел со значением 2, чтобы заменить его, а затем освободить память, выделенную для первого узла. Я не могу понять = (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