+
95
-

回答

Java中的循环队列是一种基于数组实现的队列数据结构,它支持在队列的两端进行插入和删除操作。循环队列的特点是,当队列的尾部达到数组的末尾时,它会循环到数组的开头,继续插入数据。同样地,当队列的头部达到数组的末尾时,它也会循环到数组的开头,继续删除数据。这种循环的操作方式可以使队列在固定大小的数组中实现高效的插入和删除操作,避免了数组中空间的浪费。循环队列可以用于实现缓冲区、消息队列、生产者-消费者模式等多种应用场景。在Java中,可以使用数组来实现循环队列,也可以使用Java集合框架中的Queue接口及其实现类来实现循环队列。

public class CircularQueue {
private int[] queue;
private int front;
private int rear;
private int size;

public CircularQueue(int k) {
queue = new int[k];
front = 0;
rear = -1;
size = 0;
}

public boolean enqueue(int value) {
if (isFull()) {
return false;
}
rear = (rear + 1) % queue.length;
queue[rear] = value;
size++;
return true;
}

public boolean dequeue() {
if (isEmpty()) {
return false;
}
front = (front + 1) % queue.length;
size--;
return true;
}

public int front() {
if (isEmpty()) {
return -1;
}
return queue[front];
}

public int rear() {
if (isEmpty()) {
return -1;
}
return queue[rear];
}

public boolean isEmpty() {
return size == 0;
}

public boolean isFull() {
return size == queue.length;
}
}

在这个示例中,CircularQueue类使用一个整型数组来存储队列元素,以及三个整型变量front、rear和size来记录队列的前端、后端和大小。enqueue()方法用于在队列的尾部插入元素,dequeue()方法用于在队列的前端删除元素,front()方法和rear()方法分别返回队列的前端和后端元素。isEmpty()方法和isFull()方法分别用于检查队列是否为空和是否已满。

网友回复

我知道答案,我要回答