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 ...


  • Mod

    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.


Anmelden zum Antworten