public class CircleArray {
private int maxSize;
private int 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];
}
}