:这段代码是 Java 语言实现的一个队列数据结构的示例。它包含一个内部类 Node,用于表示队列中的节点。Node 类有三个成员变量:value、pre 和 next,分别表示节点的值、前一个节点的引用和后一个节点的引用。
外部类 Queue 有两个成员变量:head 和 tail,分别表示队列的头节点和尾节点。它提供了四个方法:pushHead(int data)、pushTail(int data)、popHead() 和 popTail()。pushHead 和 pushTail 方法分别用于在队列的头部和尾部添加节点。popHead 和 popTail 方法分别用于从队列的头部和尾部删除节点,并返回删除节点的值。如果队列为空,popHead 和 popTail 方法将返回-1。
这段代码提供了一个基本的队列功能,允许用户在队列的头部和尾部添加或删除元素。
public class Queue {
private Node head;
private Node tail;
public void pushHead(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 pushTail(int data) {
Node newNode = new Node(data);
if (tail == null) {
head = newNode;
tail = newNode;
}else{
tail.next = newNode;
newNode.pre=tail;
tail = newNode;
}
}
public int popHead() {
if (head == null) {
return -1;
}
int value=head.value;
if (head == tail) {
head = null;
tail = null;
}
Node next=head.next;
head.next=null;
next.pre=null;
head=next;
return value;
}
public int popTail() {
if (tail == null) {
return -1;
}
int value=tail.value;
if (tail == head) {
tail = null;
head = null;
}
Node prev=tail.pre;
prev.next = null;
tail.pre=null;
tail=prev;
return value;
}
private static class Node {
private int value;
private Node pre;
private Node next;
public Node(int value) {
this.value = value;
}
}
}