0

我试图弄清楚这个 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;
        }
    }
}
4

2 回答 2

4

您正在丢失对 k 的更改,因为 Java 正在按值传递对 k 的引用。这意味着当方法退出时,分配 k = node 不会持续存在。

查看此问题以获取有关该问题的更多信息:)

于 2012-06-01T18:24:51.817 回答
0

在前面添加需要更改第一个节点,一个解决方案:

public LinkedList add(int n){
    LinkedList node = new LinkedList(n);

    node.next = this;
    return node;
}

l = l.add(7);
于 2012-06-01T18:25:17.473 回答