package alog;
/**
* 环形队列数组实现
*/
public class CircleQueue {
private int front;
private int rear;
private int maxsize;
private int[] data;
public boolean isEmpty() {
return front == rear;
}
public boolean isFull() {
return (rear + 1) % maxsize == front;
}
public CircleQueue(int maxsize) {
this.maxsize = maxsize+1;
this.data = new int[maxsize+1];
}
public boolean addQueue(int v) {
if (isFull()){
System.out.println("队列已满");
return false;
}
data[rear] = v;
rear = (rear + 1) % maxsize;
return true;
}
public int takeQueue() {
int result;
if (isEmpty()) return -1;
result = data[front];
front = (front + 1) % maxsize;
return result;
}
public void show() {
for(int i =front;i!=rear;i=(i+1)%maxsize){
System.out.print(data[i]+",");
}
System.out.println("");
}
public int size() {
return (rear + maxsize - front) % maxsize;
}
public static void main(String[] args) {
CircleQueue queue = new CircleQueue(6);
queue.addQueue(10);
queue.addQueue(11);
queue.addQueue(12);
queue.addQueue(13);
queue.addQueue(15);
queue.addQueue(14);
queue.addQueue(16);
queue.addQueue(17);
queue.addQueue(18);
queue.addQueue(19);
queue.addQueue(20);
int i = queue.takeQueue();
System.out.println("队列提取数据:"+i);
i = queue.takeQueue();
System.out.println("队列提取数据:"+i);
queue.addQueue(21);
queue.show();
}
}
简单数组实现环形队列
于 2022-07-23 15:39:59 首次发布
651

被折叠的 条评论
为什么被折叠?



