public class CircleArray {
private int maxSize;
private int front;//环形队列中,front表示队列中的第一个元素;
private int rear;//队列中最后一个元素的后一个位置
private int[]arr;//模拟环形队列
//创建队列
public CircleArray(int maxSize) {
this.maxSize = maxSize;
arr = new int[maxSize];
front = 0;
rear = 0;
}
//判空
public boolean isEmpty(){
if(rear == front)return true;
else return false;
}
//判满
public boolean isFull(){
if((rear+1)%maxSize==front)return true;
else return false;
}
//出队列
public int getQueue(){
if(isEmpty())throw new RuntimeException("队列为空");
int sum = arr[front];
front = (front+1)%maxSize;
return sum;
}
//增加数据
public void add(int sum){
if(isFull()){
System.out.println("队列满");
return;
}
arr[rear] = sum;
rear = (rear+1)%maxSize;
}
//显示队列的元素
public void showQueue(){
if(isEmpty()){
System.out.println("队列为空");
return;
}
for(int i=front;i<front+getSize();i++){
System.out.print("索引位置:"+i%maxSize+"; 值:"+arr[(i%maxSize)]+",");
System.out.println();
}
}
//获取元素个数
public int getSize(){
return (rear-front+maxSize)%maxSize;
}
//显示头部数据
public int headQueue(){
if(isEmpty()){
throw new RuntimeException("队列空");
}
return arr[front];
}
}
用数组实现环形队列
猜你喜欢
转载自blog.csdn.net/qq_44895397/article/details/106063051
今日推荐
周排行