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

    Description
    想想双向链表……双向队列的定义差不多,也就是说一个队列的队尾同时也是队首;两头都可以做出队,入队的操作。
    现在给你一系列的操作,请输出最后队列的状态;
    命令格式:
    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

     1 #include<stdio.h>
     2 #include<deque>
     3 #include<string.h>
     4 using namespace std;
     5 int main()
     6 {
     7     deque<int>q;
     8     int t,i,j,k[100],count,a;
     9     char x[20];
    10     scanf("%d",&t);
    11     count=0;
    12     j=0;
    13     while(t--)
    14     {
    15         scanf("%s",x);
    16         if(strcmp(x,"LIN")==0)
    17         {
    18             scanf("%d",&a);
    19             q.push_front(a);
    20             count++;
    21         }
    22         if(strcmp("RIN",x)==0)
    23         {
    24             scanf("%d",&a);
    25             q.push_back(a);
    26             count++;
    27         }
    28         if(strcmp("LOUT",x)==0)
    29         {
    30             count++;
    31             if(q.size()==0)
    32                 k[j++]=count;
    33             else
    34             {
    35                 q.pop_front();
    36             }
    37         }
    38         if(strcmp("ROUT",x)==0)
    39         {
    40            count++;
    41             if(q.size()==0)
    42                 k[j++]=count;
    43             else
    44             {
    45                 q.pop_back();
    46             }
    47         }
    48     }
    49     for(i=0;i<q.size();i++)
    50     {
    51         a=q.front();
    52         printf("%d ",a);
    53         q.pop_front();
    54         q.push_back(a);
    55     }
    56     printf("
    ");
    57     for(i=0;i<j;i++)
    58     {
    59         printf("%d ERROR
    ",k[i]);
    60     }
    61     return 0;
    62 }
  • 相关阅读:
    【转载】超级实用且不花哨的js代码大全 -----高级应用(一)
    【 Date 对象 参考手册】
    js随机数random()方法
    【转载】js数组的操作
    【转载】js数组和json的区别
    干货----004----MySQL忘记root密码怎么办?
    PHP框架——TP_0001----ThinkPHP常用配置
    干货----003----乱码解决方法
    Python之路【第二十六篇】:xml模块
    Python之路【番外篇1】:使用Python创建照片马赛克
  • 原文地址:https://www.cnblogs.com/wkfvawl/p/8671843.html
Copyright © 2011-2022 走看看