gpt4 book ai didi

java - Java 中的链表实现看起来不像 C++ 中的链表

转载 作者:太空狗 更新时间:2023-10-29 20:21:28 24 4
gpt4 key购买 nike

我浏览了 LinkedList 并看到了 Java 中的实现。在我尝试和实现链表的那些日子里,它有指针和地址以及大量的艰苦工作。使用 Java 实现起来更容易,但我仍然需要做一些工作。我对链表的了解从下图中很清楚,其中 1,2,3,4 是链表的节点。 enter image description here

但是在 java 中,我遇到的代码让我想到 LinkedList 如下图。 enter image description here

链表在Java中的实现代码如下,

class LinkedListNode
{
LinkedListNode nextNode = null;//consider this member variable
int data;
public LinkedListNode(int data)
{
this.data = data;
}
void appendItemToLinkedList(int newData)
{
LinkedListNode end = new LinkedListNode(newData);
LinkedListNode temp = this;
while (temp.nextNode != null) { temp = temp.nextNode; }
temp.nextNode = end;

}
}

public static void main(String[] args) 
{
LinkedListNode list = new LinkedListNode(10);
list.appendItemToLinkedList(20);
list.appendItemToLinkedList(30);
list.appendItemToLinkedList(40);
list.appendItemToLinkedList(50);
list.appendItemToLinkedList(60);
}

在图中,您可以清楚地看到节点对象位于其他节点对象的内部。它真的是一个链表。还是一个父容器,其中包含其他容器等等?

最佳答案

第二张图是认为一个列表包含另一个列表的结果(如果 LinkedList 类型是原始类型就会这样)。

当您考虑一个 LinkedList 引用 另一个时,会出现第一个图表。

因为 LinkedList 是引用类型,而不是原始类型,nextNode 字段不会就地存储完整的 LinkedList,但仅供引用。因此,您的第一个图表是正确的,即使是在 Java 中也是如此。

另见:

关于java - Java 中的链表实现看起来不像 C++ 中的链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43931745/

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