数组实现循环队列-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 ( ) ) ;
}
}