Verknüpfte Liste Destruktor

Studiere ich C++ auf meine eigene Zeit, und schreiben Sie eine verknüpfte Liste, um zu versuchen und erhalten Sie den Dreh. Ich bin besorgt über die Art und Weise habe ich um das Objekt zu löschen. Es ist eine einfach verkettete Liste. Hier ist der Destruktor:

template <typename T>
LinkedList<T>::~LinkedList() 
{
  Node<T> * current = this->first;
  do {
    Node * temp = current->next;
    delete current; //THIS JUST MIGHT BE A TERRIBLE IDEA!!!
    Node * current = temp; //new current-- might work with the current
                           //delete a line above
  } while (current->next != 0); //need to leave this->last so that I don't
                                //delete it twice in the next line.
                                //Just realized I'm deleting this->first, then 
                                //in the next line [implicitly] deleting it again!
                                //
  delete this;
}

Ich erstelle einen Zeiger auf den ersten Knoten in der Liste, erstellen Sie einen temporären Zeiger auf den nächsten Knoten, löschen Sie den ersten Zeiger, erstellen Sie einen neuen Zeiger mit dem gleichen Namen, die dann in einer Schleife zurück. Nachdem es fertig ist, löscht er die "this" - Zeiger.

Ich bin sicher, Sie können sehen, warum ich bin besorgt, mit der Möglichkeit, die ich erstellen Sie einen neuen Zeiger mit dem gleichen Namen wie eine gelöschte Zeiger.

  • was ist Ihre Frage?
  • oops. Ich würde gerne wissen, wenn Sie einen Zeiger, es zu löschen, dann eine neue mit dem gleichen Namen in einer Schleife koscher ist.
  • watch out, werden die tabs nicht gut mit Markdown. Ich nahm mir die Freiheit zu reindent den code mit Leerzeichen nur.
Schreibe einen Kommentar