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

    想想双向链表……双向队列的定义差不多,也就是说一个队列的队尾同时也是队首;两头都可以做出队,入队的操作。

    现在给你一系列的操作,请输出最后队列的状态;

    命令格式:

    LIN X  X表示一个整数,命令代表左边进队操作;

    RIN X  表示右边进队操作;

    ROUT

    LOUT   表示出队操作;

    Input

    第一行包含一个整数M(M<=10000),表示有M个操作;

    以下M行每行包含一条命令;

    命令可能不合法,对于不合法的命令,请在输出中处理;

    Output

    输出的第一行包含队列进行了M次操作后的状态,从左往右输出,每两个之间用空格隔开;

    以下若干行处理不合法的命令(如果存在);

    对于不合法的命令,请输出一行X ERROR

    其中X表示是第几条命令;

    Sample Input

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

    Sample Output

    3
    7 ERROR
    #include <iostream>
    #include<cstdio>
    #include <deque>
    using namespace std;
    #include <stdio.h>
    #include <string.h>
    deque<int> dq;
    int main()
    {
        int n,i,b,e=0,m=0,k,v,u;
        char s[10];
        int s1[10001],s2[10001];
        scanf("%d",&n);
    
        for(i=1;i<=n;i++)
        {
            getchar();
            scanf("%s",s);
            if(strcmp(s,"LIN")==0)
            {
                scanf("%d",&b);
                dq.push_front(b);
            }
            if(strcmp(s,"RIN")==0)
            {
                scanf("%d",&b);
                dq.push_back(b);
            }
            if(strcmp(s,"LOUT")==0)
            {
                if(dq.empty())
                {
                    s1[e++]=i;
                    continue;
                }
                else
                {
                    dq.pop_front();
                }
            }
            if(strcmp(s,"ROUT")==0)
            {
                if(dq.empty())
                {
                    s1[e++]=i;
                    continue;
                }
                else
                    dq.pop_back();
            }
        }
        v=dq.size();u=0;
        for(k=0;k<v;k++)
        {
            if(u==0)
                printf("%d",dq.front());
            else
                printf(" %d",dq.front());
            u++;
            dq.pop_front();
        }
        puts("");
        s1[e]=0;
        for(k=0;k<e;k++)
            printf("%d ERROR
    ",s1[k]);
        return 0;
    }
  • 相关阅读:
    Element.scrollIntoView()
    dot.js
    微信小程序页面跳转导航wx.navigateTo和wx.redirectTo
    小程序swiper 滑块视图容器
    小程序表单提交
    自适应宽度圆角导航如何实现
    PC端和移动端一些奇葩兼容性问题
    如何实现两行内容增多和一行内容增多,多余的内容显示省略号
    表单提交判断,数据只能提交一次判断
    改变CSS世界纵横规则的writing-mode属性
  • 原文地址:https://www.cnblogs.com/zcy19990813/p/9702797.html
Copyright © 2011-2022 走看看