class - 链表中的下一个对象如何工作?它如何使另一个类对象指向下一个地址?
问题描述
class Node
{
public int data;
public Node next;
public Node(int idata) {
data = idata;
next = null;
}
}
Node newnode = new Node(val);
newnode.next = null;
就像我正在创建类 Node 的新对象 newnode 一样,它如何使用 .next 来查找列表的下一个地址?
解决方案
在您的示例代码next
中只是null
. 实际上,没有必要明确地做newnode.next = null;
,因为它已经null
在Node
构造函数中初始化了。
next
当您将另一个新节点分配给您创建的节点的属性时,它变得更加有趣:
Node newnode = new Node(1);
newnode.next = new Node(2);
在 Java 中,对象是通过引用来访问的。newnode
是这样的参考,newnode.next
也是这样的参考。两者都是对Node
实例的引用(如果不是null
)。
我们可以进一步扩展链表:
newnode.next.next = new Node(3);
newnode.next.next.next = new Node(4);
当您意识到这next
是一个可以像任何变量一样保存值的属性时,它就真的没有魔法了。
例如,您还可以首先创建断开连接的 Node 实例,并且仅在创建它们之后将它们链接在一起:
Node a = new Node(1);
Node b = new Node(2);
Node c = new Node(3);
Node d = new Node(4);
a.next = b;
b.next = c;
c.next = d;
推荐阅读
- html - 单击选择时 IE11 崩溃 - 下拉选项(随机)
- laravel - PhpWord 将 docx 内容插入到另一个 docx
- cordova - 由于 8.0 导致的 Cordova 错误“路径”参数必须是字符串类型。接收类型未定义
- sql - 在没有足够数据可用的情况下,使用带有前导空值的 SQL 窗口函数计算移动平均值
- javascript - 保存垫滑动切换的切换状态
- azure - 如何在 azure 中侦听来自事件网格侦听器的事件到 gcp 中的存储桶
- java - 如何在法语中设置 Stanford-NLP 简单 API?
- python - GraphQL:如何定义输入参数/约束
- r - 根据数据框每一行的值对单元格着色
- kubernetes - 使用 GCP 进行自定义运行状况检查