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
  • 相关阅读:
    es5预览本地文件、es6练习代码演示案例
    Java实现 LeetCode 838 推多米诺(暴力模拟)
    Java实现 LeetCode 838 推多米诺(暴力模拟)
    Java实现 LeetCode 838 推多米诺(暴力模拟)
    Java实现 LeetCode 837 新21点(DP)
    Java实现 LeetCode 837 新21点(DP)
    Java实现 LeetCode 837 新21点(DP)
    Java实现 LeetCode 836 矩形重叠(暴力)
    Subversion under Linux [Reprint]
    Subversion how[Reprint]
  • 原文地址:https://www.cnblogs.com/LK1994/p/3150094.html
Copyright © 2011-2022 走看看