/**

 * 环形队列

 *

 */

public class AnnularQueue

{

int[] intArray; // 容器

int size; // 长度

int head; // 头

int tail; // 尾

public AnnularQueue(int size)

{

intArray = new int[size];

size = 0;

head = 0;

tail = -1;

}

/**

* 判满

* @return

*/

public boolean isFull()

{

if(intArray.length == size)

return true;

return false;

}

public boolean isEmpty()

{

if(size == 0)

return true;

return false;

}

/**

* 入队

* @param i

* @return

*/

public boolean push(int i)

{

if(isFull())

return false;

intArray[++tail%intArray.length] = i;

size++;

return true;

}

/**

* 出队

* @param j

* @return

*/

public int remove()

{

if(isEmpty())

return -1;

size--;

return intArray[head++%intArray.length];

}

/**

* 遍历

*/

public void traverse()

{

for(int i = head; i < head + size; i++)

   System.out.println(intArray[i%intArray.length]);

}


public static void main(String[] args)

{

AnnularQueue queue = new AnnularQueue(4);

queue.push(100);

queue.push(200);

queue.push(300);

queue.push(400);

queue.push(500);

queue.traverse();

System.out.println(queue.remove());

System.out.println(queue.remove());

System.out.println(queue.remove());

queue.push(700);

queue.traverse();

}


}