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