gpt4 book ai didi

java - Java链表实现中的head是什么

转载 作者:行者123 更新时间:2023-12-01 12:08:02 25 4
gpt4 key购买 nike

我正在阅读“破解编码面试”,我注意到下面的 Java 中链表实现的代码。

class Node {
Node next = null;
int data;

public Node (int d){
data = d;
}

void appendToTail(int d){
Node end = new Node(d);
Node n = this;
while(n.next != null){
n = n.next;
}
n.next = end;
}
}

Node n = this; 这行让我非常困惑。我们应该从列表的头部开始直到列表的末尾。java中的“this”通常指的是当前实例。那么,这两者有何关系呢?我确信我在这里遗漏了一些东西。请帮忙!

最佳答案

每当对于 Node 引用 someNodesomeNode.appendToTail(x) 被调用时,它都会创建一个新的 Node 具有数据值 x,并将其附加到包含 someNode 的任何列表的尾部。如果 someNode 还不是列表的一部分,那么它将随后成为两个节点列表的头,并以新节点作为尾部。如果 someNode 是较长列表的一部分,则新节点将是该列表的尾部。

为此,appendToTail 必须找到尾注,即带有 null next 指针的尾注。它使用 this 自行开始搜索。如果它是列表的尾部,则将跳过循环,因为 nextnull,并且 n.next = end; 赋值将具有 next = end; 的效果。如果列表中有更多节点,则 while 循环将跳过它们,直到找到当前尾部。

关于java - Java链表实现中的head是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27455827/

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