我试图弄清楚这个LinkedList实现有什么问题。结果不是我的预期,我认为应该是:9 4 2 7 5.但是,当我运行它时,只添加了5个。有人可以解释一下原因吗?非常感谢!
public class LinkedList {
LinkedList next;
int value;
public LinkedList(int value) {
this.value = value;
next = null;
}
public void add(int n, LinkedList k) {
LinkedList node = new LinkedList(n);
node.next = k;
k = node;
}
}
public class LinkedListDemo {
public static void main(String[] args) {
LinkedList l = new LinkedList(5);
l.add(7,l);
l.add(2,l);
l.add(4,l);
l.add(9,l);
while(l != null) {
System.out.println(l.value);
l = l.next;
}
}
}
答案 0 :(得分:4)
您正在丢失对k的更改,因为Java将引用传递给k值。这意味着当方法退出时,赋值k = node不会持久存在。
请查看此question以获取有关此问题的更多信息:)
答案 1 :(得分:0)
在前面添加需要更改第一个节点,一个解决方案:
public LinkedList add(int n){
LinkedList node = new LinkedList(n);
node.next = this;
return node;
}
l = l.add(7);