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

    题目描述

          想想双向链表……双向队列的定义差不多,也就是说一个队列的队尾同时也是队首;两头都可以做出队,入队的操作。
    现在给你一系列的操作,请输出最后队列的状态;
    命令格式:
    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
     1 #include<cstdio>
     2 #include<iostream>
     3 #include<string.h>
     4 #include<queue>
     5 using namespace std;
     6 
     7 int main()
     8 {
     9     int n,wrong[101],c,x;
    10     char s[10];
    11     deque<int>dque;
    12     c = 0;
    13     scanf("%d",&n);
    14     for(int i = 1; i <= n; i++)
    15     {
    16         scanf("%s",s);
    17         if(strcmp(s,"LIN") == 0)
    18         {
    19             scanf("%d",&x);
    20             dque.push_front(x);
    21         }
    22         else if(strcmp(s,"RIN") == 0)
    23         {
    24             scanf("%d",&x);
    25             dque.push_back(x);
    26         }
    27         else if(strcmp(s,"LOUT") == 0)
    28         {
    29             if(dque.empty())
    30             {
    31                 wrong[c++] = i;
    32                 continue;
    33             }
    34             else
    35             {
    36                 dque.pop_front();
    37             }
    38         }
    39         else if(strcmp(s,"ROUT") == 0)
    40         {
    41             if(dque.empty())
    42             {
    43                 wrong[c++] = i;
    44                 continue;
    45             }
    46             else
    47             {
    48                 dque.pop_back();
    49             }
    50         }
    51     }
    52     printf("%d",dque.front());
    53     dque.pop_front();
    54     while(!dque.empty())
    55     {
    56         printf(" %d",dque.front());
    57         dque.pop_front();
    58     }
    59     printf("
    ");
    60     for(int i = 0; i < c; i++)
    61     {
    62         printf("%d ERROR
    ",wrong[i]);
    63     }
    64 
    65     return  0;
    66 }
    View Code
  • 相关阅读:
    python装饰器的wraps作用
    lambda函数和map函数
    python直接赋值、切片、浅拷贝和深拷贝
    ubuntu shell脚本出错 dash
    关于方法论和相关书籍
    如何安全的大数据量表在线进行DML操作
    mysql group by 查询非聚集列
    MongoTemplate进行增删改查
    Mockito 的用法
    一个人开始优秀的3种迹象
  • 原文地址:https://www.cnblogs.com/LK1994/p/3150094.html
Copyright © 2011-2022 走看看