双链表

61 阅读2分钟

这是一个名为DoubleLinkListNode的公共类,它代表了一个双向链表的节点。这个类有两个私有成员变量:headtail,分别代表双向链表的头节点和尾节点。类中还有两个方法:addFirstaddLast,用于在双向链表的头部和尾部添加新的节点。

addFirst方法用于在双向链表的头部添加一个新的节点。该方法首先创建一个新的Node对象,然后判断head是否为null。如果headnull,表示链表为空,将新创建的节点作为headtail。如果head不为null,则将新节点的next指针指向当前的head节点,当前head节点的pre指针指向新节点,最后将head指针更新为新节点。

addLast方法用于在双向链表的尾部添加一个新的节点。该方法首先创建一个新的Node对象,然后判断head是否为null。如果headnull,表示链表为空,将新创建的节点作为headtail。如果head不为null,则将新节点的pre指针指向当前的tail节点,当前tail节点的next指针指向新节点,最后将tail指针更新为新节点。

Node类是一个私有的静态内部类,代表双向链表中的每个节点。它有三个成员变量:valueprenextvalue表示节点存储的值;pre表示前一个节点的引用;next表示下一个节点的引用。Node类的构造函数用于初始化节点,并将值传递给value变量。

DoubleLinkListNode类提供了一个简单的双向链表实现,允许你在头部和尾部添加节点。

public class DoubleLinkListNode {

    private Node head;

    private Node tail;


    public void addFirst(int data) {

        Node newNode = new Node(data);
        if (head == null) {
            head = newNode;
            tail = newNode;
        } else {
            newNode.next = head;
            head.pre=newNode;
            head = newNode;
        }


    }

    public void addLast(int data) {
        Node newNode = new Node(data);
        if (head == null) {
            head = newNode;
            tail = newNode;
        }else {
            tail.next = newNode;
            newNode.pre = tail;
            tail = newNode;
        }



    }

    private static class Node {


        private int value;

        private Node pre;
        private Node next;

        public Node(int value) {

            this.value = value;
        }

    }

}