Ich versuche eine verkettete Liste umzukehren, die funktioniert, aber wenn ich versuche, das Original zu drucken, schlägt es fehl (druckt nur den Kopf). Meine Frage ist, warum würde die Umkehrung das Original beeinflussen. Unten ist mein Code. LinkedList ist meine eigene Klasse, also auch Node. Wenn ich vor dem Rückwärtsfahren versuche, meine Liste zu drucken, funktioniert das. Umkehren einer verketteten Liste in Java, ohne das Original zu ändern
public static void main(String[] args) {
LinkedList list;
...
Node head = list.getHead();
Node rev = reverse(head);
Node temp = rev;
while (temp != null) {
System.out.println(temp);
temp = temp.next;
}
temp = head;
while (temp != null) {
System.out.println(temp);
temp = temp.next;
}
}
private static reverse(Node head) {
// Reversing the linked list
}
EDIT :: Dies scheint eine Java Sache zu sein. Java übergibt ein Objekt als Referenz. Wenn ich den Kopf als Parameter überlasse, wird er als Referenz übergeben, und jede Änderung, die daran vorgenommen wird, spiegelt sich in der aufrufenden Funktion wider. Doing Node h = Kopf und dann übergeben h als Parameter wird auch nicht funktionieren, da h das gleiche Objekt wie Kopf sein wird. Die einzige Option, die ich mir vorstellen kann, besteht darin, ein neues Objekt zu erstellen, die verknüpfte Liste zu kopieren und diese als Parameter zu übergeben.
Meine Frage wird, gibt es eine bessere Lösung?
Meinst du sowas wie Node h = head; reverse (h) – jCoder
Sie müssen 'new Node()' aufrufen, um ein separates Objekt zu erhalten. – 4castle
@ 4castle also, wenn ich Knoten t = neuer Node() und dann t = Kopf mache, funktioniert das immer noch nicht. Ich gehe davon aus, dass ich t = head machen muss, da ich das versuche umzukehren? – jCoder