2016-11-05 73 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

我想,因爲編譯器讀取代碼。從上到下,析構函數從第一個到最後一個刪除。你甚至可以使用{} |以確保在通常發生之前重新分配內存。