谁能告诉我为什么替换功能不起作用?说主叫replace(1,2,列表)。它应搜索节点,如果节点的值为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 2011-02-07 03:26:18