hi,
also eine doppelt verkettete Liste bietet für beide Richtungen Navigation an (im Gegensatz zu einer einfach verketteten List, die nur nach vorn geht).
Ich will hier nicht den Programmablauf kommentieren oder verändern, sondern dir einfach eine kleine Erklärung geben, wie eine solche Liste zustande kommt.
Neben den Daten, die jedes Element Deiner Liste beinhaltet, hat sie ausserdem 2 Zeiger, wobei einer auf das vorherige Element zeigt, der andere auf das nächste. Gibt es einen der beiden nicht, ist die entsprechende Variable NIL.
Das heisst, wenn Du das erste Element erzeugst, sind Zeiger zum vorherigen und nachfolgendem Element IMMER nil (nicht gesetzt). Es ist ja schliesslich das einzigste, welches es gibt in diesem Moment.
Willst Du nun ein Element anfügen, erstellst Du es, und speicherst im Feld zum vorherigen Element den Zeiger auf dein erstes Element. Im ersten wieder rum musst Du den Zeiger auf Dein neues Element im Feld für das nächste Element speichern. Damit hast Du jetzt schon eine Mini-Liste.
Fügst Du ein weiteres an, musst Du im Next-Feld des LETZTEN Elements den Zeiger auf Dein neues Element speichern, im neuen Element auf dein letztes.
Stell Dir das einfach vor wie eine Kette aus dem Mittelalter, die mit den fetten Ringen. Es ist immer ein Ring mit seinem Vorgänger und Nachfolger in der Kette verbunden, und das auf 2 Wegen (wie bei dem Kreis/Ellipse, den Ringe bilden). Da ist einmal der Halbkreis als Deine Verbindung (Zeiger zum Vorgänger) Und der andere Halbkreis als Deine Verbindung (Zeiger) zum nächsten Element.
_________________
"Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw