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

Javaがkへの参照を値で渡しているため、kへの変更が失われています。これは、メソッドの終了時に割り当てk=ノードが持続しないことを意味します。

問題の詳細については、この質問を確認してください:)

于 2012-06-01T18:24:51.817 に答える
0

前に追加すると、最初のノードを変更する必要があります。1つの解決策です。

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 に答える