gpt4 book ai didi

java - 链表的动态实现

转载 作者:行者123 更新时间:2023-12-01 06:47:04 27 4
gpt4 key购买 nike

class Nodetype
{
int info;
Nodetype next;

Nodetype(int i)
{
info=i;
next=null;
}
}

我的教科书有这段代码可以动态创建链接列表。问题是,当程序逐行执行时,它将变量“info”定义为“int”类型,然后将变量“next”定义为 Nodetype。

这里到底发生了什么?

这是否意味着变量“next”将包含 -

  1. 构造函数“节点类型”
  2. 整数信息
  3. 节点类型“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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com