Umkehrung der LinkedList in Java? Rekursion/Iteration?
Guten Tag zusammen,
Bin lange an der Aufgabe gesessen eine Umkehrung für eine LinkedList in Java zu schreiben und habe schlussendlich eine etwas umständliche Lösung gefunden (die aber immerhin funktioniert :):
Ich vermute, dass es ganz simple Lösungen (ohne Umweg über Array) mittels Rekursion oder Iteration gibt, bin aber einfach nicht drauf gekommen. Weiss jemand wie man eine Lösung schreiben könnte? Vielen lieben Dank für eure Hilfe.
Als Ergänzung der Source Code zum Node und der LinkedList:
1 Antwort
1.) Du iterierst durch die Schleife bis zum letztem Element und merkst dir dieses.
2.) Du hängst vorne jeweils ein Element aus und hängst dieses direkt an das gemerkte Element an. Das tust du solange, bis ganz vorne in deiner Liste das Element steht, das du dir zuvor gemerkt hast.
Laufzeit ist O(2n) wenn du es richtig machst. Es ginge aber auch in O(n), wenn du nicht erst bis zum letztem Element iterierst, sondern die Elemente woanders anhängst (e.g. an eine zweite Liste).
Da du dir die Tail aber sowieso zu speichern scheinst hast du ja sowieso schon eine Referenz darauf, dann kannst du es gleich so machen.