2016-11-05 1 views

Antwort

3

Jede Bestellung ist möglich - die einzige Möglichkeit, sich zu vergewissern, ist die Inspektion der spezifischen Implementierung, die Sie verwenden.

Im Allgemeinen für eine einfach verknüpfte Liste, würde ich eine erste bis letzter Bestellung erwarten, weil es einfacher ist, zu implementieren und zu einem bisschen effizienter:

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

Versus letzter Mittel-to-First-Ordnung , was für eine einfach verknüpfte Liste im allgemeinen irgendeine Art von Rekursion erfordert:

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

Also noch einmal - den einzigen Weg, um sicher zu sein ist bei verknüpften Liste Umsetzung zu suchen.

1

Ich stelle mir vor, dass der Compiler Code liest. Von oben nach unten löscht der Destruktor vom ersten zum letzten. Sie können sogar {} | verwenden um die erneute Zuweisung von Speicher sicherzustellen, bevor dies normalerweise geschieht.

Verwandte Themen