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)); } }