/** * 条件为循环数组中插入的是非负数。 */ public class MyCircularQueue { private int[] data; private int head, tail, size; public MyCircularQueue(int k){ data = new int[k]; head = tail = -1; size = k; } public boolean enQueue(int value) { if(isEmpty()) { head = 0; } if(isFull()) { return false; } tail = (tail + 1) % size; data[tail] = value; return true; } public boolean deQueue() { if(isEmpty()) { return false; } /** 注意此部分的特殊情况判断,当为空的时候直接将数组的指针直接 */ if( head == tail) { head = tail = -1; return true; } head = (head + 1) % size; return true; } public boolean isFull() { return (tail + 1) % size == head; } public boolean isEmpty(){ return head == -1; } public int getFont() { if(isEmpty()) { return -1; } return data[head]; } public int getLast() { if(isEmpty()) { return -1; } return data[tail]; } }
代码示例