描述
请你实现一个循环队列,该循环队列可利用的空间大小等于�n个int型变量的大小。
操作:
push x:将�x加入到循环队列尾端。若循环队列已满,输出"full"(不含引号),否则不输出任何内容。保证�x为int型整数。
front:输出队首元素,队首不出队。若队列为空,输出"empty"(不含引号)。
pop:输出队首元素,且队首出队。若队列为空,输出"empty"(不含引号)。
输入描述:
第一行输入两个整数�,�n,q (1≤�,�≤1051≤n,q≤105),表示循环队列可利用的空间大小和操作次数。
接下来的�q行,每行一个字符串,表示一个操作。保证操作是题目描述中的一种。
输出描述:
按对应操作要求输出。
输入:
3 10 push 1 push 2 front push 3 push 4 pop pop pop front pop
复制
输出:
1 full 1 2 3 empty empty
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main{
public static void main(String[] args)
{
Queue<Integer> queue=new LinkedList<>();
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int m=scanner.nextInt();
int p=0;
while(m-->0){
String str= scanner.next();
if("push".equals(str)){
int x=scanner.nextInt();
if(p>=n) System.out.println("full");
else {
queue.add(x);
p++;
}
}
else if("front".equals(str)){
if(queue.isEmpty()) System.out.println("empty");
else System.out.println(queue.peek());
}
else if("pop".equals(str)){
if(queue.isEmpty()) System.out.println("empty");
else {
p--;
System.out.println(queue.remove());
}
}
}
}
}