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

标签 java c++ linked-list object-reference

我浏览了 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/

相关文章:

java - Spring Rest 模板 - 响应主体为空

java - 如何在源代码中引用预定义的数据库条目

c++ - 局部变量与类变量编译器优化;有效与无效

在 C 中创建通用链表

C:链接列表和指针到指针

c - 链表和指向不完整类类型的指针

java.lang.IllegalArgumentException

java - 如何循环浏览我创建的砖 block 图形?

c++ - C++ 中 typedef 和指针的规则是什么?

c++ - 如何在检测到人脸opencv后扩展矩形