Java中的Linkedlist实现看起来像在C++中的linkedlist

nob*_*alG 3 c++ java linked-list object-reference

我正在浏览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;

    }
}
Run Code Online (Sandbox Code Playgroud)

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);
    }
Run Code Online (Sandbox Code Playgroud)

在图中,您可以清楚地看到节点对象位于其他节点对象内.它真的是一个链表.或者是一个容纳其他容器的父容器,依此类推?

sta*_*ica 5

第二个图是因为认为一个列表包含另一个列表(如果LinkedList类型是基本类型那样).

当您考虑LinkedList 引用另一个时,会产生第一个图表.

因为LinkedList是引用类型而不是基本类型,所以该nextNode字段不存储完整LinkedList的就地,而只存储一个引用.因此,您的第一个图是正确的,即使在Java中也是如此.

也可以看看: