class Nodetype
{
int info;
Nodetype next;
Nodetype(int i)
{
info=i;
next=null;
}
}
我的教科书有这段代码可以动态创建链接列表。 问题是,当程序逐行执行时,它将变量“info”定义为“int”类型,然后将变量“next”定义为 Nodetype。
这里到底发生了什么?
这是否意味着变量“next”将包含 -
- 构造函数“节点类型”
- 整数信息
- 节点类型“next”,其中“next”将再次拥有所有 1,2,3,然后 3 将再次拥有 1,2,3...等等...直到无穷大?
我真的很生气,因为我无法理解它是如何工作的,有人可以轻松解释一下吗?
最佳答案
您的代码很好地遵循了列表的定义:列表为 null
或一个元素后跟一个列表。
在您的情况下,“元素”由 int
值定义,“后跟”部分是 next
变量;在 Java 变量中(当它们不是文字时,如 int
值)实际上是指针,因此虽然它们未初始化,但它们不存储任何有效值,也不指向任何内存区域(即它们的值为 null
),因此,当 next
变量保持原样时,您的元素后面不会跟随任何其他元素。要动态地将元素添加到列表中,您需要一个指向最后添加的元素的指针,否则您将无法再次找到它们:
int i = 0;
Nodetype head = new Nodetype(i++);
Nodetype last = new Nodetype(i++);
head.next = last;
while (i<5) {
Nodetype temp = new Nodetype(i++);
last.next = temp;
last = temp;
}
while(head) {
System.out.println(head.info);
head = head.next;
}
请注意,在最后几行中,您如何丢失了 head
指针,并且无法恢复列表的起点。使用列表时请记住这一点;)
关于java - 链表的动态实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8456158/