这是一个名为DoubleLinkListNode的公共类,它代表了一个双向链表的节点。这个类有两个私有成员变量:head和tail,分别代表双向链表的头节点和尾节点。类中还有两个方法:addFirst和addLast,用于在双向链表的头部和尾部添加新的节点。
addFirst方法用于在双向链表的头部添加一个新的节点。该方法首先创建一个新的Node对象,然后判断head是否为null。如果head为null,表示链表为空,将新创建的节点作为head和tail。如果head不为null,则将新节点的next指针指向当前的head节点,当前head节点的pre指针指向新节点,最后将head指针更新为新节点。
addLast方法用于在双向链表的尾部添加一个新的节点。该方法首先创建一个新的Node对象,然后判断head是否为null。如果head为null,表示链表为空,将新创建的节点作为head和tail。如果head不为null,则将新节点的pre指针指向当前的tail节点,当前tail节点的next指针指向新节点,最后将tail指针更新为新节点。
Node类是一个私有的静态内部类,代表双向链表中的每个节点。它有三个成员变量:value、pre和next。value表示节点存储的值;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;
}
}
}