Java中的Linkedlist实现看起来不像C中的linkedlist
作者:互联网
我正在浏览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中也是如此.
也可以看看:
>另一个问题,“What’s the difference between primitive and reference types?”
> Java语言规范:Chapter 4.1, “Kinds of Types and Values”
标签:object-reference,java,c,linked-list 来源: https://codeday.me/bug/20190823/1700358.html