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;
    }
  • 相关阅读:
    Object-C支持多继承吗?可以实现多个接口吗?Category是什么?
    Action类为何要继承ActionSupport
    JAVA中的File类
    Oracle中奇怪的【不等于号】
    Oracle中INSTR、SUBSTR和NVL的用法
    【ERROR】Oracle11g两个监听同名进程的故障
    【ERROR】EXP-00091
    【ERROR】while loading shared libraries: /u01/app/oracle/product/11.2.0/lib/libclntsh.so.11.1: cannot
    【js】appendChild
    【js】正则表达式(II)
  • 原文地址:https://www.cnblogs.com/zcy19990813/p/9702797.html
Copyright © 2011-2022 走看看