队列(queue):在线性表的一端插入元素,在另一端删除元素,所以遵循先进先出( **FIFO**)原则,元素从队尾进,队首出,不允许插队!
其中删除元素的一端称为队首(front),插入元素的一端称为队尾(rear)。
队列就像我们排队打饭,先来的先打饭,后来的只能排在队尾。
第1行包含一个整数?,表示有??条关于?queue
?的操作,在进行任何操作之前,queue
?都是空的。接来的??行,每行是一个关于?queue
?的操作,格式和含义如下:clear
:把队列置空。
empty
:判断队列是否为空。
push
:把整数 x 插入队尾(x 为 int 范围里的数)。
pop
: 队首元素出队列。
front
:获取队首元素的值。
对于?front
?操作,输出一个整数,如果这个操作失败,则输出单词 ”error”。
对于?pop
?操作,如果这个操作失败,则输出单词 “error”。
对于?empty
?操作,如果队列是空,则输出 ”empty”,否则输出 ”not empty”。
A.in
复制8
push 10
front
push 15
pop
front
clear
front
pop
A.out
复制10
15
error
error
_____________________________________________________________________________
日常发作业题解。?
写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!?
_____________________________________________________________________________
#include <bits/stdc++.h>
using namespace std;
int que[1000005],a=1,b,n,y;//a为队首,b为队尾
string x;
void push(int x){
que[++b]=x;
}
void pop(){
a++;
}
int front(){
return que[a];
}
int empty(){
if(b-a+1==0)return 1;
else return 0;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>x;
if(x[0]=='p'&&x[1]=='u'){
cin>>y;
push(y);
}
else if(x[0]=='p'){
if(empty()==1)cout<<"error\n";
else pop();
}
else if(x[0]=='f'){
if(empty()==1)cout<<"error\n";
else cout<<front()<<endl;
}
else if(x[0]=='e'){
if(empty()==1)cout<<"empty\n";
else cout<<"not empty\n";
}
else if(x[0]=='c')a=1,b=0;
}
}
?