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
  • 相关阅读:
    眼睛的颜色 博弈
    codevs1281 矩阵乘法 快速幂 !!!手写乘法取模!!! 练习struct的构造函数和成员函数
    10 25日考试 数学题目练习 斐波拉契 打表
    线段树 模板
    榨取kkksc03 luogu1855 dp 裸二维费用背包
    低价购买 洛谷1108 codevs4748 dp
    [转] 经典排序算法
    [USACO08DEC] Trick or Treat on the Farm
    [NOIP2009] 靶形数独(搜索+剪枝)
    各种蒟蒻模板【如此简单】
  • 原文地址:https://www.cnblogs.com/LK1994/p/3150094.html
Copyright © 2011-2022 走看看