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

我想,因为编译器读取代码。从上到下,析构函数从第一个到最后一个删除。你甚至可以使用{} |以确保在通常发生之前重新分配内存。