STL-管道二

来源:互联网 发布:东方挂馅炒饭 知乎 编辑:程序博客网 时间:2024/06/02 06:42

Description

现在有一个管道,这个管道是垂直的可以容纳许多字符串。我们定义如下操作。

1.插入 将一个字符串压入管道中,新压入的字符串位于管道的最上方。

2.插入 将一个字符串压入管道中,新压入的字符串位于管道的最下方。

3.输出管道中最低端的字符串,如果管道为空,输出-1

4.输出管道中最高端的字符串,如果管道为空,输出-1

5.将最低端的字符串删除,删除之后原来位于第二低的字符串到了最低端,如果管道为空,输出-1

6.将最高端的字符串删除,删除之后原来位于第二高的字符串到了最高端,如果管道为空,输出-1

0.将管道清空

Input

第一行为一个整数不超过1000

之后Q行 每行首先一个整数 代表操作 0分别对应三种操作

如果操作为一 之后跟随一个字符串 只包含小写字母

Output

每一个2操作输出相应的答案

Sample Input

31 a2 b3

Sample Output

b

HINT

你可以使用STL中的deque很轻易的完成这个问题。


原博客地址:http://blog.csdn.net/morewindows/article/details/6946811

这个题用双向队列deque来做,就是判断n值的问题,不得不感叹前人的伟大,竟然有这么好用的东西(*^_^*)

ac代码:

#include <bits/stdc++.h>using namespace std;int main(){    int T;    deque<string> q;    string s;    while(cin>>T)    {        while(T--)        {            int n;            cin>>n;            if(n == 1)            {                cin>>s;                q.push_front(s);            }            else if(n == 2)            {                cin>>s;                q.push_back(s);            }            else if(n == 3)            {                if(q.empty())                    cout<<"-1"<<endl;                else                    cout<<q.back()<<endl;            }            else if(n == 4)            {                if(q.empty())                    cout<<"-1"<<endl;                else                    cout<<q.front()<<endl;            }            else if(n == 5)            {                if(q.empty())                    cout<<"-1"<<endl;                else                    q.pop_back();            }            else if(n == 6)            {                if(q.empty())                    cout<<"-1"<<endl;                else                    q.pop_front();            }            else if(n == 0)                q.clear();        }    }    return 0;}


0 0
原创粉丝点击