为什么我不能修改在所述循环内循环外声明的LinkedList?

时间:2017-08-28 18:47:28

标签: java

我尝试创建一个通过循环添加的LinkedList。

public class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }
}

public class Something {
    public void method() {

        ListNode node = null;
        ListNode out = node;
        for (int i = 0; i < 10; i++) {
            node = new ListNode(i);
            node = node.next;
        }

    return out;
    }
}

这种方式在我脑海中起作用的方式是这样的:

node->null;

node->null;
       ^
       |
      out

out->0->null
          ^
          |
         node
...
out->0->1->2->3->4->5->6->7->8->9->null
                                     ^
                                     |
                                   node

但是,out返回null,就好像循环从未运行过一样。我如何得到我描述的行为?

1 个答案:

答案 0 :(得分:1)

这应该可以按预期工作。首先必须分配一个初始节点,在该节点上分配下一个节点。在新创建的下一个节点上,您将进一步创建下一个节点。

public static void main(String[] args) {
    ListNode k = Something.method();

    while(k.next != null){
        System.out.println(k.val);
        k = k.next;
    }

}

private static class ListNode {
    int val;
    ListNode next = null;
    ListNode(int x) { val = x; }
}

public static class Something {
    public static ListNode method() {

        ListNode node = new ListNode(0);
        ListNode out = node;

        for (int i = 1; i < 10; i++) {
            node.next = new ListNode(i);
            node = node.next;
        }

        return out;
    }
}

然后,您返回初始节点,其中包含您的&#34;第一个&#34;节点下一个节点。