首页 > 解决方案 > 这是 LinkedList 的正确可视化吗?

问题描述

我目前正在研究 Linked List,我在 stackoverflow、geeksforgeeks 中查看了一些问题,我只想澄清我的理解是否正确。在我展示我的可视化之后,我还有几个问题。

下面是一个简单的java程序来介绍链表

public class LinkedList {
    Node head;
    public static void main (String [] args){
        LinkedList list = new LinkedList();
        list.head = new Node(1);
        Node second = new Node(2);
        Node third = new Node(3);

        list.head.next = second;
        second.next = third;
    }
}

class Node{
    int data;
    Node next;

    Node(int d){
        data = d;
        next = null;
    }
}

这将创建一个 LinkedList (1,2,3)

据我了解,这里是创建 LinkedList 的步骤,如果我错了,请纠正我

  1. 你有 2 类是class LinkedListclass Node
  2. 在里面class LinkedList我声明了一个可以稍后使用的对象,它是Node head;
  3. 里面class Node是一个对象的另一个声明,它是Node next;一个将接受数据的构造函数(我创建了一组节点)
  4. 回去class LinkedList我实例化一个object list将成为节点的容器,所以它就像一个class Node内部对象的对象class LinkedList

这是我的可视化: 在此处输入图像描述

我的问题是:

  1. 为什么我不能只创建头部Node head = new Node(1);而不是Node head;
  2. 据我了解,对象list被创建为对象的容器class Node,对吗?

  3. 最后,为什么我必须Node next;在 Node 构造函数中声明,为什么我必须设置为next = null;

标签: javadata-structureslinked-list

解决方案


  1. 您似乎对创建头部 ( new Node(1))、分配头部 (=运算符) 和声明头部 () 的想法感到困惑Node head;。你的类定义只需要声明这个实例变量,构造函数处理这个对象的创建和赋值。

  2. 类的目的Node是包含值和到下一个对象的链接。因此,没有理由将您的LinkedList类视为Node该列表中所有对象的容器,就像对待其他列表类型一样。

  3. next = null;是不必要的,因为null它是实例变量的默认值。


推荐阅读