我在这里阅读链接列表,我有点困惑。我已经把它画出来了,但看起来它们仍然是一样的。
遍历链表:
Node tmp = head;
while(tmp != null) {
tmp = tmp.next;
}
Run Code Online (Sandbox Code Playgroud)
我对 while 循环的思考过程:tmp 从头开始。现在,当 tmp 指向下一个节点时,tmp 继续指向它旁边的节点。它一直持续到 tmp 没有指向它旁边的另一个节点。
添加到链表的末尾:
public void addLast(AnyType item)
{
if(head == null) addFirst(item);
else
{
Node<AnyType> tmp = head;
while(tmp.next != null)
tmp = tmp.next;
tmp.next = new Node<AnyType>(item, null);
}
}
Run Code Online (Sandbox Code Playgroud)
我对 while 循环的思考过程:tmp 从头开始。现在,当 tmp 指向下一个节点时,tmp 继续指向它旁边的节点。它一直持续到 tmp 没有指向它旁边的另一个节点。然后它跳出循环并分配 tmp 指向新节点旁边。
在第一个循环中使用
温度 != 空
您将遍历链表并完全交叉它。当您只需要打印链表的所有元素时,它会很有用。但是如果在最后添加一个节点,您必须在最后一个节点处停止,以便您可以将新节点附加到 last.next 节点。
temp.next != null
确保它将停在最后一个节点 where temp.next is actually null
。使用 1st 时,您将无法在最后一个节点处停止,但使用 2nd 时,您将停在必须附加新节点的地方,即最后,否则您将跳过它。
问:它们是同一回事吗?
不,他们不是。
问题的最后一段是正确的
我对 while 循环的思考过程:tmp 从头开始。现在,当 tmp 指向下一个节点时,tmp 继续指向它旁边的节点。它一直持续到 tmp 没有指向它旁边的另一个节点。然后它跳出循环并分配 tmp 指向新节点旁边。
现在添加到它,第一种情况是您的temp本身将变为null
归档时间: |
|
查看次数: |
3847 次 |
最近记录: |