当我浏览链表时,它会出现故障。我无法弄清楚为什么会这样做。我的任务是RECURSIVELY(所有函数)按顺序插入整数,创建一个函数来检查整数,打印列表,向后打印列表,删除节点,以及删除整个列表。我是最后一部分,现在已经停留了一段时间。非常感谢。
void deleteList(node* head)
{
node* temp;
if(head == NULL)
printf("List is empty\n");
else
{
temp = head->next;
free(head);
}
deleteList(head->next);
}
答案 0 :(得分:4)
您首先释放head使用的内存,然后将head成员作为参数传递给“deleteList”。
我认为它应该是第一个deleteList然后免费:
if (head)
{
deleteList(head->next);
free(head);
}
答案 1 :(得分:2)
问问自己......为什么要存储变量temp
。它看起来并不像你曾经用过任何东西。
我认为你意味着使用它,你可能应该使用它。
答案 2 :(得分:1)
你已经自由了,所以当你做的时候
deleteList(head->next);
您正在访问无效内存,请使用您的临时变量。
deleteList(temp);
答案 3 :(得分:0)
应该是
temp=head;
head=head->next;
free(temp);
deleteList(head);