数据结构之循环队列(Java实现)
public class SqQueue {
private int MaxSize;
private int[] data;
private int front;
private int rear;
SqQueue(int MaxSize){
this.MaxSize=MaxSize;
this.front=0;
this.rear=0;
this.data=new int[MaxSize];
}
@Override
public String toString() {
return "SqQueue{" +
"data=" + Arrays.toString(data) +
", front=" + front +
", rear=" + rear +
'}';
}
public static void main(String[] args) {
SqQueue Q=new SqQueue(4);
System.out.println( EnQueue(Q,2));
System.out.println( EnQueue(Q,7));
System.out.println( EnQueue(Q,8));
System.out.println(DeQueue(Q));
System.out.println( EnQueue(Q,9));
System.out.println(Q);
System.out.println("队列长度为:"+lengthQ(Q));
}
public static boolean isEmpty(SqQueue Q){
if(Q.front==Q.rear){
return true;
}
return false;
}
public static int lengthQ(SqQueue Q){
return (Q.rear-Q.front+Q.MaxSize)% Q.MaxSize;
}
public static boolean EnQueue(SqQueue Q,int x){
if((Q.rear+1)%Q.MaxSize==Q.front){
System.out.println("队满");
return false;
}
Q.data[Q.rear]=x;
Q.rear=(Q.rear+1)%Q.MaxSize;
System.out.println("入队:"+x);
return true;
}
public static boolean DeQueue(SqQueue Q) {
if (Q.front == Q.rear) {
System.out.println("队空");
return false;
}
int x = Q.data[Q.front];
System.out.println("出队:"+x);
Q.data[Q.front]=0;
Q.front = (Q.front + 1) % Q.MaxSize;
return true;
}
}