public class QueueTest {
private int[] elements;
private int maxSize; //最大容量,实际存储是最大容量-1,需要一个空位作为判断位
private int front; //队列首位元素
private int rear; //这里rear指向最后一个数据的后面一个位置,即队列中有一个为空占位
private int size; //队列元素总数
public QueueTest(int maxSize){
this.maxSize=maxSize;
this.elements=new int[maxSize];
this.front=0;
this.rear=0; //指向以添加元素的下一个下标
this.size=0;
}
public boolean isFull(){ //判断队列是否已满
return (rear+1)%maxSize==front;
}
public boolean isEmpty(){ //判断队列是否为空
return front==rear;
}
public void add(int element){
if(isFull()){
System.out.println("full....");
return;
}else{
elements[rear]= element;
rear=(rear+1)%maxSize;
size++;
}
}
public void pop(){
if(isEmpty()){
throw new RuntimeException("empty.....");
}else{
System.out.println("出队列元素"+elements[front]);
elements[front]=0;
front=(front+1)%maxSize;
size--;
}
}
public int size(){
return this.size;
}
@Override
public String toString() {
return Arrays.toString(elements);
}
public static void main(String[] args) {
QueueTest queueTest = new QueueTest(6);
queueTest.add(5);
queueTest.add(4);
queueTest.add(3);
queueTest.add(52);
queueTest.add(54);
System.out.println(queueTest);
queueTest.pop();
queueTest.pop();
queueTest.pop();
queueTest.pop();
queueTest.pop();
System.out.println(queueTest);
}
}
Java 实现循环队列
于 2022-02-25 00:56:38 首次发布