zoukankan      html  css  js  c++  java
  • 【STL】双向队列

    双向队列 

    Time Limit: 1000MS Memory limit: 65536K

    题目描述

          想想双向链表……双向队列的定义差不多,也就是说一个队列的队尾同时也是队首;两头都可以做出队,入队的操作。
    现在给你一系列的操作,请输出最后队列的状态;
    命令格式:
    LIN X  X表示一个整数,命令代表左边进队操作;
    RIN X  表示右边进队操作;
    ROUT
    LOUT   表示出队操作;

    输入

    第一行包含一个整数M(M<=10000),表示有M个操作;
    以下M行每行包含一条命令;
    命令可能不合法,对于不合法的命令,请在输出中处理;

    输出

    输出的第一行包含队列进行了M次操作后的状态,从左往右输出,每两个之间用空格隔开;
    以下若干行处理不合法的命令(如果存在);
    对于不合法的命令,请输出一行X ERROR
    其中X表示是第几条命令;

    示例输入

    8
    LIN 5
    RIN 6
    LIN 3
    LOUT
    ROUT
    ROUT
    ROUT
    LIN 3

    示例输出

    3
    7 ERROR

    不会双向队列的可以看一下这个链接:http://blog.csdn.net/morewindows/article/details/6946811
    #include<iostream>
    #include<algorithm>
    #include<queue>
    using namespace std;
    int main()
    {
        deque<int>q;
        string s;
        int num[100];
        int n, i, t, k=1, cnt=0;
        cin>>n;
        while(n--)
        {
            cin>>s;
    
            if(s=="LIN")
            {
                cin>>t;
                q.push_front(t);
            }
            if(s=="RIN")
            {
                cin>>t;
                q.push_back(t);
            }
            if(s=="LOUT")
            {
                if(q.empty())
                {
                    num[cnt++] = k;
                }
                else
                {
                    q.pop_front();
                }
            }
            if(s=="ROUT")
            {
                if(q.empty())
                {
                    num[cnt++] = k;
                }
                else
                {
                    q.pop_back();
                }
            }
            k++;
        }
        while(!q.empty())
        {
            cout<<q.front();
            q.pop_front();
            if(q.empty())
                cout<<endl;
            else cout<<" ";
        }
            for(i=0; i<cnt; i++)
            {
                cout<<num[i]<<" ERROR"<<endl;
            }
        return 0;
    }
  • 相关阅读:
    字体图标
    HBase Shell 常用命令
    Centos7 KVM日常运维
    Centos7 KVM安装部署
    Centos7安装Puppet自动运维
    Centos7安装ansible自动运维
    H3C巡检基本命令
    组播学习
    Centos7下使用LVM给系统硬盘扩容
    python 类中方法总结 --- 实例方法、类方法、静态方法
  • 原文地址:https://www.cnblogs.com/6bing/p/4122964.html
Copyright © 2011-2022 走看看