我不了解Node.next的工作原理

时间:2019-09-14 12:46:43

标签: java data-structures linked-list reference singly-linked-list

我正在学习链表的工作原理,但是我不了解一些简单的知识,例如Node.next的工作原理,我认为问题是我不了解java中的引用是如何工作的。

public class Node {
int date;
Node next; //This line i don't understand, what are we doing when we declare  class type inside the same class
}

但是还有:

public class SinglyLinkedList {
private Node first; //What is the difference between this line and the line in the class Node? 

2 个答案:

答案 0 :(得分:1)

Node next;

您可以称之为转发参考。它告诉您该类Node的实例具有引用,该引用可以指向另一个节点实例。

当然,最初该引用将为null(不指向另一个Node)。但是,当您开始构建节点列表时,该工作原理是通过将该字段值从null更改为指向该类的某个实例,从而链接到next节点。这就是简单的链接列表的工作方式:您从一个根节点开始,然后向列表中添加注释意味着:更新此类next字段。

从这个角度来看,上述两个类之间没有“真正的”区别。你也可以去:

Node firstNode = new Node(5);
Node secondNode = new Node(42);
firstNode.next = secondNode;

具有一个带有first字段的不同类的要点是出于概念上的原因:第二类“告诉”读者:“我的目的是包含列表的第一个Node对象”。

您可以打开here,以获取有关类,对象和引用的更多详细说明。

请注意:这里最关键的一点是,默认情况下,当您进行new Node()调用时,该字段nextnull开头。

答案 1 :(得分:0)

您创建了一个对象(在本例中为Node),这对您确定下一个对象(或上一个对象,父对象或子对象等)非常重要,该对象需要一个具有相同对象类型的变量。