xuxu完成了栈的实验要求后,他又很是开心,刚要出去liuda, biaobiao突然问道老师让做的队列的那个实验你写完了么,xuxu顿时大呼悲哉。。。。他给忘记了,怎么办。。明天就要上交实验报告了,你能帮他搞定么???
你需要完成三种操作1.enqueue x,将元素x插入队尾。2.dequeue,若队列非空,则删去队头元素,并输出该元素。3.query,从队头开始删除所有元素,并输出。
Input
本题有多组测试数据,每组数据首先输入一个T,接下来T行是T种对队列的操作。 (0< T < 100,0< x <= 500)
Output
每次执行dequeue操作时删除队头元素输出并换行,如果队列为空输出“this is empty!”并换行。
每次执行query操作时删除所有元素队列内所有元素并输出,每个元素占一行,如果栈为空输出“this is empty!”并换行。
每组数据后有一个空行。
Sample Input
10
enqueue 1
enqueue 2
enqueue 3
enqueue 4
query
dequeue
enqueue 1
dequeue
query
dequeue
Sample Output
1
2
3
4
this is empty!
1
this is empty!
this is empty!
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cstring>
#include<string>
#include<cmath>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
#define ll long long
#define mes(x,y) memset(x,y,sizeof(x))
ll gar(ll a,ll b){//最大公约数
return b==0?a:gar(b,a%b);
}
using namespace std;
int main(){
string s,n;int m;
while(cin>>m){queue<string>que;
for(int i=0;i<m;i++){
cin>>s;
if(s=="enqueue"){
cin>>n;
que.push(n);
}
else if(s=="dequeue"){
if(que.empty()==true){
cout<<"this is empty!"<<endl;
}
else{
cout<<que.front()<<endl;
que.pop();
}
}
else if(s=="query"){
if(que.empty()==true){
cout<<"this is empty!"<<endl;
}
else{
while(!que.empty()){
cout<<que.front()<<endl;
que.pop();
}
}
}
}
cout<<endl;
}
return 0;
}