思路分析
- 先进先出
- front 队头指针 初始值为0 指向队列的第一个元素
- rare 队尾指针 初始值为0 指向队列的最后一个元素的后一个位置,因为希望留出一个空间作为约定。
- maxSize队列的最大容量,初始化时候传入
- 队列空的条件:
rare == front;
- 队列满的条件:
(rare + 1) % maxSize == front;

代码
public class CycleArrayQueue {
private int[] arr;
private int maxSize;
private int front;
private int rare;
public CycleArrayQueue(int size) {
this.maxSize = size;
this.arr = new int[size];
rare = 0;
front = 0;
}
public boolean isFull() {return (rare + 1) % maxSize == front; }
public boolean isEmpty() { return rare == front; }
public void enQueue(int value) {
if (isFull()) {
System.out.println("队列已满");
return;
}
this.arr[rare] = value;
this.rare = (rare + 1) % maxSize;
}
public int getQueue() {
if (isEmpty()) {
throw new RuntimeException();
}
int value = arr[front];
front = (front + 1) % maxSize;
return value;
}
public void showQueue() {
if (isEmpty()) {
System.out.println("队列为空");
}
int index = front;
System.out.print("队列:");
while ((index) % maxSize != rare) {
System.out.print(arr[index] + "\t");
index = (index + 1) % maxSize;
}
}
}