gpt4 book ai didi

java - 节点是 node != null 和 node.next == null 之间的区别?

转载 作者:行者123 更新时间:2023-12-03 21:26:51 25 4
gpt4 key购买 nike

我正在阅读链接列表 here我有点困惑。我已经画出来了,但看起来它们还是一样的。

遍历链表:

Node tmp = head;
while(tmp != null) {
tmp = tmp.next;
}

我对 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);
}
}

我对 while 循环的思考过程:tmp 从头开始​​。现在,当 tmp 指向下一个节点时,tmp 继续指向它旁边的节点。它一直持续到 tmp 没有指向它旁边的另一个节点。然后它跳出循环并分配 tmp 指向新节点的旁边。

最佳答案

在第一个循环中使用

temp != null

您将遍历链表并完全跨越它。当您必须打印链表的所有元素时,它可能很有用。但是如果在 last 中添加一个节点,您必须只在最后一个节点处停止,这样您就可以将新节点附加到 last.next 节点。

temp.next != null 确保它将在 temp.next 实际上为 null 的最后一个节点处停止。使用 1st 时,您将无法在最后一个节点处停止,但使用 2nd 时,您将在必须追加新节点的地方停止,即最后,否则您将通过它。

问。它们是一样的吗?

不,他们不是。

问题的最后一段是正确的

My thought process for the while loop: tmp starts at head. Now while tmp points to a next node, tmp moves on to pointing to the node next to it. And it goes on until tmp is not pointing to another node next to it. Then it breaks out of the loop and assigns tmp to point next to a new Node.

现在添加它,第一种情况是您的 temp 本身将变为 null

关于java - 节点是 node != null 和 node.next == null 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47825073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com