java循环双链表结构设计队列
时间: 2023-12-07 16:37:14 浏览: 85
Java循环双向链表结构可以用来实现队列,下面是一个简单的实现示例:
```java
public class Queue {
private Node head;
private int size;
private class Node {
private int data;
private Node prev;
private Node next;
public Node(int data) {
this.data = data;
}
}
public Queue() {
head = new Node(0);
head.prev = head;
head.next = head;
size = 0;
}
public void enqueue(int data) {
Node node = new Node(data);
node.prev = head.prev;
node.next = head;
head.prev.next = node;
head.prev = node;
size++;
}
public int dequeue() {
if (size == 0) {
throw new NoSuchElementException();
}
Node node = head.next;
head.next = node.next;
node.next.prev = head;
size--;
return node.data;
}
public int size() {
return size;
}
public boolean isEmpty() {
return size == 0;
}
}
```
在这个实现中,我们使用了一个内部类`Node`来表示双向链表的节点,每个节点包含一个`data`字段表示节点的数据,以及`prev`和`next`字段分别表示前驱节点和后继节点。我们还定义了一个`head`节点作为哨兵节点,它的`prev`指向链表的最后一个节点,`next`指向链表的第一个节点,这样可以方便地实现循环队列的操作。
`enqueue`方法用于向队列中添加元素,它创建一个新的节点并将其插入到链表的末尾。`dequeue`方法用于从队列中取出元素,它删除链表的第一个节点并返回其数据。`size`方法返回队列中元素的个数,`isEmpty`方法用于判断队列是否为空。
阅读全文