一道简单数据结构题。
题目大意
模拟队列和栈,其中队列是FIFO
,栈是FILO
。
输入时有多个测试用例。
做法
显而易见,当需要模拟栈的时候就用STL的stack
处理,模拟队列的时候使用queue
。
但要注意的是测试用例可能会出现队列或栈已经空了,但仍要求出队/栈的情况,所以出队/栈时要先判空。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| #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(); } } } } } }
|