Doppelt Verkettete Listen



  • Hallo zusammen ich habe eine Frage zu doppelt verketteten Listen.

    In einer Probeklausur haben wir die Folgenden Codezeilen gegeben:

    a) x->next = y;
    b) x->next ->prev = y;
    c) y->prev ->next = y->next;
    d) y->next = x->next;
    e) y->prev = x;
    f) y->next ->prev = y-prev;

    dabei Sind die Elemente X und Z eine doppelt verkettete Liste(x->next = z;x->prev = NULL; Z->prev = x; z->next = NULL) und Y ein Element welches, je nach Aufgabe z.B zwischen X und Z eingefügt werden soll bzw wieder rausgelöscht werden soll.

    Meine Frage: Was bewirken die Codezeilen b,c und f ? 🙄

    Die lösung zum Einfügen von Y zwischen x und z ist : d,b,a,e



  • Hallo,

    Die lösung zum Einfügen von Y zwischen x und z ist : d,b,a,e

    Mal sehen ob die Reihenfolge stimmt:

    // y wird vorgänger von z (b)
    x->next->prev = y;
    // z wird nachfolger von y (d)
    y->next = x->next; 
    // y wird nachfolger von x (a)
    x->next = y;
    // x wird vorgänger von y (e)
    y->prev = x;
    

    c) y->prev ->next = y->next;

    Hier wird wenn ich das richtig sehe y aus der Liste entfernt. - Es wird gesagt das der Nachfolger vom Vorgänger von y der Nachfolger von Y wird.

    f) y->next ->prev = y-prev;

    Analog zu c bezieht sich dies auf das Entfernen eines Eintrags. - Es wird hier gesagt, dass der neue Vorgänger vom Nachfolger von Y der Vorgänger von y ist.



  • Vielen dank für die schnelle und ausführliche Antwort!

    Kurz und Knapp: Hatte ganz vergessen das Y auch als Vorgänger von Z initialisiert werden muss 😃 😃


Log in to reply