我正在研究链接列表,我在理解Java中的引用和指针时遇到了一些问题(还有一些我无法在互联网上找到答案的问题.)也就是说,我有一个LinkedList使用类的Node类这个:
public class LinkedList {
public Node head;
public LinkedList(int data) {
head = new Node(data);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的Node类:
public class Node {
public int data;
public Node next;
public Node(int data2) {
data = data2;
}
}
Run Code Online (Sandbox Code Playgroud)
我也有方法toStringLL()里面LinkedList看起来像:
public void toStringLL() {
LinkedList l=this;
while(l.head.next != null) {
System.out.print(l.head.data+"->");
l.head = l.head.next;
}
System.out.print(l.head.data);
System.out.println("");
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么这会toStringLL()改变我的链表清单,当我用它迭代时l.head=l.head.next?我的头脑不应该保持不变吗?我想当我写作时LinkedList l=this,我可以自由地迭代l,而不会影响this(或者我错了?)现在当我使用Node n=this.head而不是 …