2016-11-05 5 views

答えて

3

いずれかの順序が可能です - 確かな唯一の方法は、使用している特定の実装を調べることです。

LinkedList::~LinkedList() 
{ 
    Node *node = mHead; 
    while (node) { 
     Node *next = node->mNext; 
     delete node; 
     node = next; 
    } 
} 

最後から最初に発注対:それは実装する方が簡単ですし、もう少し効率的なので、一般的には

、単独リンクリストのために、私は最初から最後順序を期待します、重リンクリストについては、一般的に再帰のいくつかの並べ替えが必要になりますどの:だからもう一度

void deleteList(Node *node) 
{ 
    if (node == 0) { 
     return; 
    } 
    deleteList(node->mNext); 
    delete node; 
    return; 
} 
LinkedList::~LinkedList() 
{ 
    deleteList(mHead); 
} 

を - 必ずする唯一の方法は、あなたのリンクリストの実装を見ることです。

1

私は、コンパイラがコードを読み取るので、想像しています。上から下へ、デストラクタは最初から最後まで削除します。 {}を使用することもできます。それが通常起こる前にメモリの再割り当てを確実にする。

関連する問題