你好我们做了一个func,它根据你要从链表中删除的号码递归删除链表。但删除后,如果我试图打印列表其堆栈,并有一个运行时错误,因为删除后,数字的位置没有任何内容。我该如何完成代码?
RDB$EXCEPTIONS
答案 0 :(得分:2)
你释放了应该返回的东西,并且指针指向被释放的东西。这是错的。
你应该引入一个缓冲区来存储应该返回的内容。
struct node* delete_item(struct node* head, int num)
{
if (head == NULL) { // Found the tail
printf("not found\n");
return NULL;
}
else if (head->data == num)
{ // Found one to delete
struct node* next = head->next;
free(head);
printf("num founded");
return next;
}
else
{ // Just keep going
head->next = delete_item(head->next, num);
return head;
}
}