Java中的循环队列是一种基于数组实现的队列数据结构,它支持在队列的两端进行插入和删除操作。循环队列的特点是,当队列的尾部达到数组的末尾时,它会循环到数组的开头,继续插入数据。同样地,当队列的头部达到数组的末尾时,它也会循环到数组的开头,继续删除数据。这种循环的操作方式可以使队列在固定大小的数组中实现高效的插入和删除操作,避免了数组中空间的浪费。循环队列可以用于实现缓冲区、消息队列、生产者-消费者模式等多种应用场景。在Java中,可以使用数组来实现循环队列,也可以使用Java集合框架中的Queue接口及其实现类来实现循环队列。
public class CircularQueue {在这个示例中,CircularQueue类使用一个整型数组来存储队列元素,以及三个整型变量front、rear和size来记录队列的前端、后端和大小。enqueue()方法用于在队列的尾部插入元素,dequeue()方法用于在队列的前端删除元素,front()方法和rear()方法分别返回队列的前端和后端元素。isEmpty()方法和isFull()方法分别用于检查队列是否为空和是否已满。
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;
}
}
网友回复
DLNA与UPnP的区别和不同?
苏超自建抢票app,通过先预约再抽签化解高并发抢票?
python如何让给电脑在局域网中伪装成电视接收手机的投屏图片视频播放?
如何结合python+js如何自己的视频编码与加密播放直播?
python如何在电脑上通过局域网将本地视频或m3u8视频投屏电视播放?
腾讯视频爱奇艺优酷vip电影电视剧视频如何通过python绕过vip收费直接观看?
有没有可免费观看全球电视台直播m3u8地址url的合集?
有没有实现观影自由的免vip影视苹果 CMS V10 API的可用url?
python如何实时检测电脑usb插入检测报警?
如何判断真人操作的鼠标移动直线轨迹与机器操作的轨迹?