Wie lösche ich doppelt verkettete Liste in C++ rekursiv?

1 Antwort

Eigentlich müsste das doch gehen, weil Head ein Attribut der Klasse ist oder?

Auf das Feld head hast du in allen nicht statischen Methoden der Klasse Zugriff. Mit inbegriffen sind Konstruktor und Destruktor.

Beim dem rekursiven Aufruf clear_rek(head->next) kommt eine Fehlermeldung.

Es wäre ein guter Anfang, die Fehlermeldung auch zu lesen und anschließend ihren Inhalt zu nutzen, um die Fehlerursache zu ergründen.

Kann mir vielleicht jemand sagen, wie ich das umsetze?

Da die Knoten doppelt verkettet sind, kannst du sowohl vom Listenanfang an, als auch vom Listenende starten. In jedem Schritt wird erst der Nachfolger (ausgehend der gewählten Richtung) ermittelt und erst danach der Knoten gelöscht. Wenn ein Nachfolger existiert, kann der nächste Schritt angestoßen werden. Andernfalls wurden alle Knoten gelöscht.