2

我的程序使用链表按顺序输入数字。

My input: 2 4 23 34 534 543 

当我去删除列表时,我得到了这个:

137429056 137428992 137429040 137429024 137429008 0 

这是为什么?

void deleteList(node* head)
{
    if(head == NULL)
        printf("List is empty\n");

    else
        deleteList(head->next);

    free(head);
}
4

2 回答 2

6

您释放了内存,但您没有将任何链接(或头部本身)设置为空,因此您正在引用未分配的内存。

另外:当while循环更简单时,为什么要使用递归?

于 2013-03-19T02:38:50.090 回答
2

这可能是一个非常古老的问题,但这个答案可以帮助某人。

deleteList(struct node* temp)
{
     if(temp == NULL)
          printf("List is empty\n");

     else {
          head = temp;
          temp->next = NULL;
          free(temp);
          deleteList(head->next);
     }
     head = NULL;
 }
于 2015-07-17T19:37:45.840 回答