package data.struct;
import java.util.Arrays;
public class ArrayQueue {
private int maxSize;//队列最大长度
private int head;//队列头
private int tail;//队列尾
private int[] array;
public static void main(String[] args) {
ArrayQueue queue = new ArrayQueue(3);
queue.showHead();//0
queue.add(1);
queue.showHead();//1
queue.showQueue();//[1, 0, 0]
queue.add(2);
queue.showQueue();//[1, 2, 0]
queue.add(3);
queue.showQueue();//[1, 2, 3]
System.out.println(queue.get());//1
queue.showHead();//2
System.out.println(queue.get());//2
System.out.println(queue.get());//3
}
public ArrayQueue(int maxSize) {
if(maxSize < 0) {
throw new RuntimeException("invalid param");
}
this.maxSize = maxSize;
array = new int[maxSize];
head = 0;//队列首位置
tail = -1;//队列位位置
}
public boolean isEmpty() {
return tail < head;//tail == head, 则代表队列恰好有一个元素
}
public boolean isFull() {
return tail == maxSize - 1;
}
//出队列
public int get() {
if(isEmpty()) {
throw new RuntimeException("array queue is empty");
}
head++;
return array[head-1];
}
//入队列
public void add(int num) {
if(isFull()) {
throw new RuntimeException("arrat queue is full");
}
tail++;
array[tail] = num;
}
//打印队列头
public void showHead() {
System.out.println(array[head]);
}
//打印整个队列
public void showQueue() {
System.out.println(Arrays.toString(array));
}
}