一,实现队列的方式-循环数组参考漫画算法P48
package com.hzc.comicAlgorithm;
public class MyQueue {
private int[] array;
private int front;
private int rear;
public MyQueue(int capacity) {//初始化一个数组作为队列,capacity n.容量
this.array = new int[capacity];
}
public void enQueue(int element) throws Exception {
if ((rear+1)%array.length == front) {//队列实际长度为数组长度减1
throw new Exception("队列已满");
}
array[rear] = element;
rear = (rear+1)%array.length;//循环数组的关键.rear代替链表的last指针,记录队尾的数组下标
}
public int deQueue() throws Exception {
if (rear == front) {
throw new Exception("队列已空");
}
int delElement = array[front];
front = (front+1)%array.length;//循环数组的关键,front代替链表中的头指针,记录对头的数组下标
return delElement;
}
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 {
MyQueue queue = new MyQueue(10);
queue.enQueue(1);
queue.enQueue(2);
queue.enQueue(3);
queue.enQueue(4);
queue.enQueue(5);
queue.enQueue(6);
queue.enQueue(7);
queue.enQueue(8);
queue.enQueue(9);
queue.deQueue();
queue.deQueue();
queue.deQueue();
queue.deQueue();
queue.deQueue();
queue.output();
}
}



