package firstHomeWork.util; /** * @Description: 循环队列 * @author: leijing * @date: 2017年2月24日 下午9:00:30 * @param <E> */ public class Queue<E> { private Object[] queue; private int capacity; private static int INITIAL_CAPACITY = 10; private int front; //队头 private int rear; //队尾 public Queue(int capacity){ this.capacity = capacity; this.front = 0; this.rear = 0; queue = new Object[capacity]; } public Queue(){ this(INITIAL_CAPACITY); } public boolean enQueue(E e) throws Exception{ if(isFull()){ return false; } if(rear == capacity - 1){//循环利用 rear = 0; } queue[rear++] = e; return true; } public E deQueue(){ if(isEmpty()){ return null; } if(front == capacity - 1){ front = 0; } return (E) queue[front++]; } public boolean isEmpty(){ return front == rear; } public int size(){ return Math.abs(rear - front) + 1; } public boolean isFull(){ return (rear + 1) % capacity == front; } }