彻底理解java链表中的节点Node

彻底理解java链表中的节点Node

链表(linked list),对应java中的LinkedList类型(基于双向链表实现)。

在c/cpp中通过"结构体+指针"实现,但是java中没有指针,所以要使用类来实现。

我们先来看cpp中的Node实现:可以发现,next中存放的是下一个Node对象的地址。

struct Node
{
    /* data */
    int val;
    struct Node* next;
    //next是结构体指针类型,存放的是下一个node的地址
};

我们再来看java中node的实现:

public class Node {
    int data;
    Node next;
    //注意这里的next是Node类型
    public Node(int data)
    {
        this.data=data;
        this.next=null;
    }
}

乍一看,next是Node类型,那么它到底存储的是什么值呢?难道是下一个对象本身?

答案:next存放的,也是下一个Node对象的地址
在这里插入图片描述
代码验证:

public class Main {
    public static void main(String[] args) {
        Node node1 = new Node(11);
        Node node2 = new Node(22);
        Node node3 = new Node(33);
        System.out.println("node1="+node1);
        System.out.println("node2="+node2);
        System.out.println("node3="+node3);

        node1.next=node2;
        node2.next=node3;

        System.out.println("node1.next="+node1.next);
        System.out.println("node2.next="+node2.next);
    }
}

输出:

node1=org.example.Node@566776ad
node2=org.example.Node@6108b2d7
node3=org.example.Node@1554909b
node1.next=org.example.Node@6108b2d7
node2.next=org.example.Node@1554909b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值