/** * @author zhangxh * @since 1.0 */ public class Queue<T> { //队首为第一个元素的位置,队尾为下一个元素的位置 private int front; private int rear; private int max_size = 16; private Object[] data; public Queue() { this(5); } public Queue(int size) { if (size < 0) { throw new IllegalArgumentException("初始化队列失败,size不合法" + size); } this.max_size = size; front = rear = 0; data = new Object[max_size]; } public boolean isEmpty() { return front == rear ? true : false; } public boolean enQueue(T t){ if (rear == max_size){ throw new IllegalArgumentException("队列已满"); } data[rear] = t; rear++; return true; } /** * 出队列 * 显示删除队首元素,然后队首序列+1 * @return */ public T deQueue (){ if (isEmpty()){ throw new IllegalArgumentException("队列为空"); } T a = (T)data[front]; data [front++] = null; return a ; } public int getLength(){ return rear- front; } //测试代码 public static void main(String[] args) { Queue queue = new Queue(); queue.enQueue("h"); queue.enQueue("e"); queue.enQueue("l"); queue.enQueue("l"); queue.enQueue("o"); System.out.println(queue.getLength()); int length = queue.getLength(); for(int i=0;i<length;i++) { System.out.println(queue.deQueue()); } System.out.println(queue.getLength()); } }