1
Hier ist die Frage. Sprich eine verknüpfte Liste wird wie folgt implementiert (Java):verlinkte Liste als Referenz oder als Wert?
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
die verknüpfte Liste vor:
1 -> 2 -> 3 -> 4
ich so etwas wie:
ListNode newHead = head;
newHead = head.next.next;
//Now newHead is pointing to (3) in the linked list.
Jetzt führe ich die Magie:
newHead.val = 87
Die Linke d Liste wird:
1 -> 2 -> 87 -> 4
Wenn ich gedruckt Kopf und NICHT newHead.
Warum ist das? Ich habe nichts mit Kopf verändert, aber es hat sich noch verändert?
Offenbar ist es, weil Sie das gleiche Objekt ändern. Die ListNodes enthalten nur die Verweise auf jeden ListNode. –
@MatthiasFax, ist es so immer, wenn ich eine Klasse zu machen und dann das tun? – sssszzzzzzssszzz
Ja, wenn Sie das Objekt nicht klonen oder tiefkopieren, gibt es nur Verweise auf den Wert (außer bei Primitiven). Überprüfen Sie diese vorhandenen Fragen: http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value http://stackoverflow.com/questions/4600974/passing-primitive -data-by-reference-in-Java –