import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String num = sc.nextLine();
String[] arr = num.split(" ");
CircleQueue que = new CircleQueue(Integer.valueOf(arr[0])+1);
while(sc.hasNextLine()){
String[] input = sc.nextLine().split(" ");
if(input[0].equals("push"))
que.push(Integer.valueOf(input[1]));
else if(input[0].equals("front"))
que.front();
else if(input[0].equals("pop"))
que.pop();
}
}
}
class CircleQueue{
private int maxSize;
private int front;
private int rear;
private int[] circle;
public CircleQueue(int size){
maxSize = size;
circle = new int[maxSize];
front = 0;
rear = 0;
}
public void push(int num){
if((rear+1)%maxSize==front){
System.out.println("full");
}else{
circle[rear] = num;
rear = (rear+1)%maxSize;
}
}
public void front(){
if(rear==front)
System.out.println("empty");
else
System.out.println(circle[front]);
}
public void pop(){
if(rear == front)
System.out.println("empty");
else{
System.out.println(circle[front]);
front = (front+1)%maxSize;
}
}
}
注意: 1.在源文件中规定只有一个类为public类型,且与文件名相同。 因为每个文件(编译单元)只有一个public类,表示每个文件都有单一的公共接口,通过public来表现。如果有多个以上就会报错。 2.循环队列往往牺牲一个单元来区分队空和队满。 队满条件:(Q.rear+1)%MaxSize==Q.front 队空条件:Q.rear==Q.front 相比于队列,循环队列的优点是不会出现假队满(假溢出)的情况。