我尝试创建一个通过循环添加的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,就好像循环从未运行过一样。我如何得到我描述的行为?
答案 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;节点下一个节点。