- 入队: rear = (rear + 1) % m
- 出队: front = (front + 1) % m
- 队空: front = rear
- 队满: front = (rear + 1) % m
- 当前队列中的元素数目: n = (rear - front + m) % m
图及公式源于:https://blog.youkuaiyun.com/u011080472/article/details/51173584
Java代码实现:
public class Queue {
private int[] array;
private int front;
private int rear;
public Queue(int capacity) {
this.array = new int[capacity];
}
/**
* 入队
*
* @throws Exception
*/
public void inQueue(int element) throws Exception {
if ((rear + 1) % array.length == front) {
throw new Exception();
}
array[rear] = element;
rear = (rear + 1) % array.length;
}
/**
* 出队
*
* @throws Exception
*/
public int outQueue() throws Exception {
if (rear == front) {
throw new Exception();
}
int outQueueElement = array[front];
front = (front + 1) % array.length;
return outQueueElement;
}
/**
* 输出队列
*/
public void output() {
for (int i = front; i != rear; i = (i + 1) % array.length) {
System.out.println(array[i]);
}
}
public static void main(String[] args) throws Exception {
Queue queue = new Queue(6);
queue.inQueue(9);
queue.inQueue(5);
queue.inQueue(7);
queue.inQueue(8);
queue.inQueue(1);
queue.outQueue();
queue.outQueue();
queue.outQueue();
queue.inQueue(2);
queue.inQueue(5);
queue.inQueue(3);
queue.output();
}
}