Einzelnen Beitrag anzeigen

Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: doppelt verkettete listen

  Alt 14. Dez 2005, 16:59
Zitat von daswurm:
so ganz hab ich das jetzt nicht verstanden ! sry ...
mir war schon bewusst das ich die liste von vorne durch laufen muss, aba wie mach ich das denn genau ??

ich bin leider vollkommen verwirrt ... ich habe bis jetzt nur mit einfacher verkettungung gearbeitet, nun wäre es ja eigentlich auch sehr sinnvoll könnte man einfach die einfache verkettung umschreiben, aba dies stellt sich als recht schwer für mich heruas .. naja ich weiß echt nicht weiter
Wenn du schon mit einfach verketteten Listen gearbeitet hast, hast du doch schon die (sprichwörtliche) halbe Miete. Du kannst ja erstmal "so tun", als ob die Liste nur einfach verkettet wäre und (wie bei einfach verketteten Listen) immer nur den Zeiger auf das nächste Element nutzen, um die Liste zu durchlaufen.

Zitat von daswurm:
kannst du mir das vll anhand eines beispieles erläutern mit dem einfügen ...
Ach du Schreck, da muss ich ja selbst Code schreiben, oder? :p
Nee, Scherz, ich kanns machen, aber das dauert eine Weile, da ich aus der Listenmaterie etwas raus bin.

Aber mal etwas zum allgemeinen Prinzip: nehmen wir an, du hast eine Liste, die nicht leer ist und schon einige alphabetisch sortiete Elemente enthält. Nehmen wir weiterhin an, dass sich folgende Elemente in der Liste befinden:
Code:
'a' <-> 'c' <-> 'f' <-> 'r' <-> 'a'
(Das letze Element ist wieder das Anfangselement.)
Als Beispiel sei mal gesagt, dass wir das Zeichen 'd' einfügen wollen. Also fangen wir am Anfang der Liste an und vergleichen:
a kommt vor d, also ermitteln wir über die Komponente .nachstes das nächste Element in der Liste. Diese wird dann wieder verglichen, und c kommt ja vor d, also gehen wir wieder ein Element weiter. Nun sind wir bei f und merken, dass f nach d kommt, also sind wir eigentlich schon zu weit. Also (und jetzt kommt der komplizierte Teil) müssen wir ein neues Listenelement anlegen und dieses vor f einfügen, indem wir die Zeiger von f und von c entsprechend abändern, sodass der Zeiger .naechstes von c auf das neue Listenelement zeigt und der Zeiger .vorheriges von f ebenfalls auf das neue Listenelement. Jetzt müssen noch die Zeiger .vorheriges bzw. .naechstes von d so geändert werden, dass sie auf die Elemente c bzw. f zeigen.
Fertig.

Zitat von daswurm:
ich möchte auch wirklich nicht, wenn das den schein erwecken sollte, dass mir das komplette programm geschrieben wir, denn dies erachte ich als nicht sehr sinnvoll.
Sehr gut, dass du das von selbst einsiehst. Wenn man etwas selber schreibt, lernt man mehr, als wenn man nur den fertigen Code vorgestzt bekommt.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat