首页 > 解决方案 > 链表中的下一个对象如何工作?它如何使另一个类对象指向下一个地址?

问题描述

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 来查找列表的下一个地址?

标签: classobjectpointerslinked-listiterator

解决方案


在您的示例代码next中只是null. 实际上,没有必要明确地做newnode.next = null;,因为它已经nullNode构造函数中初始化了。

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;


 

推荐阅读