我浏览了 LinkedList 并看到了 Java 中的实现。在我尝试和实现链表的那些日子里,它有指针和地址以及大量的艰苦工作。使用 Java 实现起来更容易,但我仍然需要做一些工作。我对链表的了解从下图中很清楚,其中 1,2,3,4 是链表的节点。
但是在 java 中,我遇到的代码让我想到 LinkedList 如下图。
链表在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/