一道简单数据结构题。
题目大意
模拟队列和栈,其中队列是FIFO
,栈是FILO
。
输入时有多个测试用例。
做法
显而易见,当需要模拟栈的时候就用STL的stack
处理,模拟队列的时候使用queue
。
但要注意的是测试用例可能会出现队列或栈已经空了,但仍要求出队/栈的情况,所以出队/栈时要先判空。
代码
代码语言:javascript复制#include<bits/stdc .h>
using namespace std;
int main(){
std::ios::sync_with_stdio(false);
cin.tie(0);
int task;
cin>>task;
for(int i=1;i<=task;i ){
int n;
string type;
cin>>n>>type;
if(type=="FIFO"){//队列
queue<int> Q;
int k;
string func;
for(int j=1;j<=n;j ){
cin>>func;
if(func=="IN"){
cin>>k;
Q.push(k);
}else if(func=="OUT"){
if(Q.empty())cout<<"None"<<endl;//判空
else{
cout<<Q.front()<<endl;
Q.pop();
}
}
}
}
else if(type=="FILO"){//栈
stack<int> S;
int k;
string func;
for(int j=1;j<=n;j ){
cin>>func;
if(func=="IN"){
cin>>k;
S.push(k);
}else if(func=="OUT"){
if(S.empty())cout<<"None"<<endl;//判空
else{
cout<<S.top()<<endl;
S.pop();
}
}
}
}
}
}