【发布时间】:2020-04-30 12:13:37
【问题描述】:
我目前正在研究 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的步骤,如果我错了,请纠正我
- 您有 2 个班级,即
class LinkedList和class Node - 在
class LinkedList中我声明了一个可以稍后使用的对象Node head; - 在
class Node内部是另一个对象声明Node next;和一个将接受数据的构造函数(我创建了一组节点) - 回到
class LinkedList,我实例化了一个object list,它将成为节点的容器,所以它就像class Node的对象在class LinkedList的对象内部
我的问题是:
- 为什么我不能将头部创建为
Node head = new Node(1);而不是Node head; 据我了解,对象
list被创建为class Node对象的容器,对吗?最后为什么我必须在 Node 构造函数中声明
Node next;,为什么我必须设置为next = null;?
【问题讨论】:
-
1.因为他们可能正在引入数据结构,请注意您正在创建一个
LinkedList(不是Node);你看到了目的地,他们向你展示了起点。 2.似乎是。 3. 你没有。next = null将是默认值。您确实需要声明Node next;- 所以一个Node可以指向下一个。您的可视化似乎不正确。1 2 3不在 Node 构造函数中。这是一个typical visualization(节点将是两个框)(来自 geekforgeek 的图像 - 他们使用 ABCD 而不是 1234)。 -
现在我明白为什么 next = null;对不起,我傻了,差点忘了它稍后会链接到 (list.head.next = second;) 谢谢!
标签: java data-structures linked-list