我正在为链表写一个插入方法,并且发现有一件事很难理解。它的工作原理使用此代码遍历时:遍历java中的链表
class Node {
int data;
Node next;
Node(int d) {
data = d;
next = null;
}
}
public static Node insert(Node head,int data) {
Node conductor = head;
if(conductor == null){
head = new Node(data);
}
else{
while(conductor.next != null){
conductor = conductor.next;
}
conductor.next = new Node(data);
}
return head;
}
,但如果我改变while循环:
while(conductor != null){
conductor = conductor.next;
}
conductor = new Node(data);
它不工作。我不明白有什么不同。 任何人都可以帮忙吗?
添加新节点在第一个,之后的'while','conductor'是最后一个元素在列表中。第二,'导体'是'空'而不是列表的一部分。 –
让我明白这一点:您将代码更改为不同的代码,然后您想知道为什么它不同?你为什么不举一个短名单的例子来解决失败者在做什么? –
我明白了!我误解了null。我认为最后一个节点指向的null有一个引用,所以只要导体指向null,它就会成为列表的一部分。现在我知道null是null,它不包含任何引用。谢谢! –