这个LinkedList结果有什么问题?

时间:2012-06-01 18:19:31

标签: java data-structures linked-list

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

2 个答案:

答案 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);