Algorithmen
Um in der Liste leicht in beide Richtungen suchen zu können,
z.B. um von einem Element den Vorgänger zu suchen, kann der
Knoten zwei Zeiger bekommen. Ein Zeiger zeigt auf das nachfolgende
Element, der zweite zeigt auf das Element vor dem Knoten in der Liste.
Damit werden allerdings Einfüge- und Löschoperationen
komplizierter.
Das Einfügen am Anfang der Liste ist noch recht einfach und
ähnelt dem Einfügen für die einfach verkettete Liste.
- Der Nachfolger-Zeiger des neuen Elements wird auf den Wert
gesetzt, den die Wurzel hat, zeigt also auf das erste Element der
Liste.
- Der Vorgänger-Zeiger des ersten Elements zeigt auf das neue
Element.
- Jetzt wird die Wurzel auf das neue Element gesetzt.
Das Einfügen in der Mitte oder am Ende der Liste ähnelt
auch dem Einfügen in die einfach verkettete Liste, es müssen
zusätzlich die Vorgänger-Zeiger mit umgesetzt werden.
- Der Nachfolger-Zeiger des einzufügenden Elements wird auf
den Wert gesetzt, den der Zeiger des Elements hat, auf den der
Suchzeiger zeigt.
- Der Vorgänger-Zeiger des Elements, vor dem eingefügt
wird, wird auf das neue Element gesetzt.
- Der Vorgänger-Zeiger des neuen Elements wird auf den Wert
gesetzt, auf den der Suchzeiger zeigt. Er zeigt also auf das Element,
hinter dem eingefügt wird.
- Der Nachfolger-Zeiger des Elements, auf den der Suchzeiger zeigt,
wird auf das neue Element gesetzt.
Das Entfernen eines Elements ähnelt auch wieder dem Entfernen
aus einer einfach verketteten Liste. Es müssen aber wieder zwei
Zeiger verändert werden.
- Der Suchzeiger durchläuft die Liste bis zu dem Element, das
direkt vor dem zu entfernenden Element steht. Ein weiterer Zeiger wird
auf das zu löschende Element gesetzt, damit es nicht
verlorengeht.
- Der Nachfolger-Zeiger des Elements, auf den der Suchzeiger zeigt,
wird auf den Wert gesetzt, auf den das zu löschende Element
zeigt.
- Der Vorgänger-Zeiger des Elements hinter dem zu
löschenden Element wird auf das Element gesetzt, auf den der
Suchzeiger zeigt.
- Damit ist das Element aus der Liste entfernt.
Auch hier kann die Sonderbehandlung durch ein zusätzliches
Dummy-Element, dem Wächter, vermieden werden.
Beispielcode
|
English version not yet available.
|
Änderungen und Irrtümer vorbehalten. Letzte Änderung:
14 September 2001.
Home -
Mail an den Webmaster -
Impressum