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

メモリを解放しますが、どのリンク (またはヘッド自体) も null に設定しないため、割り当てられていないメモリを参照しています。

また: 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 に答える