【HDU 1702】ACboy needs your help again!

2022-01-12 15:01:11 浏览数 (2)

一道简单数据结构题。

题目大意

模拟队列和栈,其中队列是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();
                    }
                }
            }
        }
    }
}

0 人点赞