1. ホーム
  2. c++

[解決済み] LinkedListのデストラクタを書く?

2022-03-06 22:18:42

質問

これは有効なLinkedListのデストラクタでしょうか?私はまだそれらによって一種の混乱です。

正しく理解しているか確認したいのですが。

 LinkedList::~LinkedList()
 {
   ListNode *ptr;

   for (ptr = head; head; ptr = head)
   {
     head = head->next
     delete ptr;
   }
}

ループの最初では、ポインタ ptr にリストの最初のノードである head のアドレスが設定されています。ループの最初の繰り返しで、pointer は再び head に設定されます。

気になるのは、一番最後のノードに到達することです。条件 "head;" がヌルでないことをチェックする必要がありますが、うまくいくかどうかわかりません。

よろしくお願いします。

解決方法は?

なぜ、もっともっとシンプルに、エレガントな while -ループを使用することで、過剰にコンパイルされた for -ループは正しいのでしょうか?

ListNode* current = head;
while( current != 0 ) {
    ListNode* next = current->next;
    delete current;
    current = next;
}
head = 0;