【问题标题】:How does the next object work in Linked List? How is it able to make another class objects point to the next address?链表中的下一个对象如何工作?它如何使另一个类对象指向下一个地址?
【发布时间】:2021-02-02 04:22:42
【问题描述】:
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 来查找列表的下一个地址?

【问题讨论】:

    标签: class object pointers linked-list iterator


    【解决方案1】:

    在您的示例代码中,next 只是 null。实际上,没有必要显式地执行newnode.next = null;,因为它已经在Node 构造函数中初始化为null

    当您将另一个新节点分配给您创建的节点的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;
    
    
     
    

    【讨论】:

    • 我还有一个疑问,所以就像在您的示例中一样,如果 d 是我们添加的最后一个引用,它会自动指向 null 吗?或者我们必须明确写 d.next = null?
    • new Node() 调用将执行Node 类的构造函数中的代码,其中next 设置为null。所以尾节点不需要额外的操作。
    猜你喜欢
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 2013-12-29
    相关资源
    最近更新 更多