Kopf einer Liste bekommen ohne back / dummy?

notparanoidbutanandr
Neuling
Neuling
Beiträge: 5
Registriert: 16. Jul 2017 15:31

Kopf einer Liste bekommen ohne back / dummy?

Beitrag von notparanoidbutanandr » 24. Sep 2017 16:23

Hallo allerseits,

in der Klausur wird ja nach Angabe ListItem<T> nicht unbedingt mit back definiert.

Es gab ja Aufgaben, bei denen man eine Liste aus gegebenen Elementen erzeugen sollte, und da gab es ja den Trick, ein Dummyelement zu benutzen, um am Ende dummy.next als richtigen Kopf auszugeben.

Wie sollte man am ehesten vorgehen, wenn .back nicht existiert (/erlaubt ist) und man den Kopf einer Liste, über die man gerade gelaufen ist, zurückgeben will?
Auf dem Java-Übungsblatt waren einige Aufgaben, wo es erforderlich war, den Anfang einer Liste auszugeben, dann hab ich einfach jeweils 'zurückgespult' mit .back. Wie kann man das am besten machen, wenn .back nicht erlaubt ist?

Ohne .back bringt ein Dummy mMn auch nichts, denn wenn man z.B. dummy = list (also head) als Referenz setzt, ändert sich ja trotzdem das Attribut, da man darüberläuft und es manipuliert, und dummy ist ja nur eine Referenz.

Oft ist es sogar nicht erlaubt, irgendwie neue Elemente mit 'new...' zu erzeugen. :?

Viele Grüße

marcblaa
Neuling
Neuling
Beiträge: 4
Registriert: 15. Sep 2016 03:24

Re: Kopf einer Liste bekommen ohne back / dummy?

Beitrag von marcblaa » 25. Sep 2017 23:39

Du kannst dir den Dummy zwischeinspeichern und z.B. dummy.next zurückgeben um den eigentlichen Kopf der SinglyLinkedList zurückzugeben.
Die Referenz von dummy auf das nächste Element musst du also auch nicht löschen.
Bei einer double LinkedList würde ich die Referenz auf dummy mit back aber löschen. Jedenfalls würde ich auch nicht empfehlen die Liste immer wieder "zurückzuspulen" sondern, einfach das erste Element zwischenzuspeichern, so sparst du dir eine Schleife.
Beispiel (SinglyLinkedList):
Bild

Hans123
Mausschubser
Mausschubser
Beiträge: 44
Registriert: 12. Jun 2017 13:23

Re: Kopf einer Liste bekommen ohne back / dummy?

Beitrag von Hans123 » 26. Sep 2017 11:05

Wenn new nicht erlaubt ist, kannst du auch die zweite und dritte Zuweisung ersetzen mit ListItem<T> start = head/ oder was auch immer am Anfang der Liste stehen soll. Und die Liste gehst du dann trotzdem mit dem temp durch und am Ende gibst du dann start aus.

Antworten

Zurück zu „Archiv“