彻底理解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对象的地址
彻底理解java链表中的节点Node_第1张图片
代码验证:

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

你可能感兴趣的:(java,链表,开发语言)