Doppelte Verkettete Liste
-
Hoi ich versuche gerade selber eine Doppelte Verkettete Liste zu entwickeln, die Einfache verkette Liste habe ich bereits verstanden.
struct TListenKnoten { int data; TListenKnoten *next; // Verknüpfung zum nachfolgenden Objekt TListenKnoten *back; }; TListenKnoten *Anker = 0; // Anfang der Liste void add ( int v ) { // Neues Element für die Liste erzeugen: TListenKnoten *node = new TListenKnoten; node->data = v; // data einen Wert zuweisen node->next = Anker; // Hänge die bisherige Liste an Anker = node; // Anker zeigt jetzt auf die Struktur TList }Beim ersten Auruf von add wird ein node Objekt erstellt Adresse ( 0x8f60d8 ).
Beim zweiten Aufruf von add wird wieder ein node Objekt erstellt Adresse( 0x8f60e8 ).Was ich hier vorwärts mache muss ich bei einer Doppelt Verketteten Liste ja rückwärts machen, aber wie soll das funktionieren?
Ich komm nicht drauf ...
-
Du musst das bisherige Ende (hier: das Element, auf das Anker zeigt) eben auch verändern, so dass dessen back* auf das neue Element zeigt. Außerdem sollte das back des neuen Elementes auf 0 gesetzt werden, da es noch keinen Vorgänger hat. Achtung: Du musst den Sonderfall beachten, dass die Liste vorher leer war.
*: Das ist übrigens eine Fehlübersetzung. back bedeutet eher "hinten" oder "zurück", nicht "vorher". "previous" wäre passender.