数组实现循环队列-Java
package MyQueue;
import java.lang.reflect.Array;
public class MyQueueArray<AnyType> {
private int theSize;
private int currentSize;
private Object[] theItems;
private int front;
private int back;
public MyQueueArray(int size) {
theSize = size;
theItems = new Object[theSize];
front = back = 0;
}
public int size() {
return currentSize;
}
public boolean isEmpty() {
return size() == 0;
}
public boolean isFull() {
return (back+1) % theSize == front;
}
public void enqueue(AnyType x) {
if (isFull()) {
throw new IndexOutOfBoundsException("full");
}else{
back = back % theSize;
theItems[back++] = x;
}
currentSize++;
}
public AnyType dequeue() {
if (isEmpty()) {
throw new IndexOutOfBoundsException("empty");
}
front = front % theSize;
currentSize--;
return (AnyType) theItems[front++];
}
}
测试
package MyQueue;
public class MyQueueArrayTest {
public static void main(String[] args) {
MyQueueArray<Integer> myQueueArray = new MyQueueArray<>(6);
myQueueArray.enqueue(1);
myQueueArray.enqueue(2);
myQueueArray.enqueue(3);
myQueueArray.enqueue(4);
System.out.println(myQueueArray.dequeue());
System.out.println(myQueueArray.dequeue());
System.out.println(myQueueArray.dequeue());
myQueueArray.enqueue(5);
myQueueArray.enqueue(6);
myQueueArray.enqueue(7);
System.out.println(myQueueArray.dequeue());
System.out.println(myQueueArray.dequeue());
System.out.println(myQueueArray.dequeue());
System.out.println(myQueueArray.dequeue());
System.out.println(myQueueArray.dequeue());
}
}