双向队列

Time Limit: 1000MS Memory limit: 65536K

题目描述

想想双向链表……双向队列的定义差不多,也就是说一个队列的队尾同时也是队首;两头都可以做出队,入队的操作。
现在给你一系列的操作,请输出最后队列的状态;
命令格式:
LIN X  X表示一个整数,命令代表左边进队操作;
RIN X  表示右边进队操作;
ROUT
LOUT   表示出队操作;

输入

第一行包含一个整数M(M<=10000),表示有M个操作;
以下M行每行包含一条命令;
命令可能不合法,对于不合法的命令,请在输出中处理;

输出

输出的第一行包含队列进行了M次操作后的状态,从左往右输出,每两个之间用空格隔开;
以下若干行处理不合法的命令(如果存在);
对于不合法的命令,请输出一行X ERROR
其中X表示是第几条命令;

示例输入

  1. 8
  2. LIN 5
  3. RIN 6
  4. LIN 3
  5. LOUT
  6. ROUT
  7. ROUT
  8. ROUT
  9. LIN 3

示例输出

  1. 3
  2. 7 ERROR
  3.  
  4. 双端队列的典型操作模拟题!一开始读错题了,WA一次!
    注意:先输出处理完这m条命令后 队列里还有什么数据, 然后再依次输出报错的指令信息!
  1. #include <iostream>
  2. #include <string>
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <map>
  6. #include <stack>
  7. #include <deque> //双端队列
  8. #include <algorithm>
  9. #include <ctype.h>
  10.  
  11. using namespace std;
  12.  
  13. int a[20000], e;
  14.  
  15. int main()
  16. {
  17. int m;
  18. cin>>m;
  19. int i, j, dd;
  20. string s;
  21. deque<int>q;
  22. deque<int>::iterator it;
  23.  
  24. for(i=1; i<=m; i++)
  25. {
  26. cin>>s;
  27. if(s=="LIN")
  28. {
  29. cin>>dd;
  30. q.push_front(dd);
  31. }
  32. else if(s=="RIN")
  33. {
  34. cin>>dd;
  35. q.push_back(dd);
  36. }
  37. else if(s=="LOUT")
  38. {
  39. if(q.empty())
  40. {
  41. a[e++]=i;
  42. }
  43. else
  44. {
  45. q.pop_front();
  46. }
  47. }
  48. else if(s=="ROUT")
  49. {
  50. if(q.empty())
  51. {
  52. a[e++]=i;
  53. }
  54. else
  55. {
  56. q.pop_back();
  57. }
  58. }
  59. }
  60.  
  61. int flag=0;
  62. for(it=q.begin(); it!=q.end(); it++)
  63. {
  64. if(flag==0)
  65. {
  66. printf("%d", *it );
  67. flag=1;
  68. }
  69. else if(flag==1)
  70. {
  71. printf(" %d", *it );
  72. }
  73. }
  74.  
  75. if(flag==1)
  76. {
  77. printf("\n"); //如果flag==1 就表示最后状态的队列里还有数据,输出完这些数据后就要输出换行! 如果flag==0, 则没有必要换行了!
  78. }
  79. for(j=0; j<e; j++)
  80. {
  81. printf("%d ERROR\n", a[j] );
  82. }
  83. return 0;
  84. }
  1.  

双端队列篇deque SDUT OJ 双向队列的更多相关文章

  1. [LeetCode] Design Circular Deque 设计环形双向队列

    Design your implementation of the circular double-ended queue (deque). Your implementation should su ...

  2. [LeetCode] 641.Design Circular Deque 设计环形双向队列

    Design your implementation of the circular double-ended queue (deque). Your implementation should su ...

  3. Java 双端队列接口 Deque

    Deque 是一种支持在两端进行操作的线性结构,包含了栈和队列的功能.Java 中建议使用 Dqueue 的实现来替代遗留的 Stack 类.本文将介绍 Deque 提供的主要 API. 双端操作 A ...

  4. 队列(Queue)\双端队列(Deque)

    队列(Queue)\双端队列(Deque) 队列(Queue) 双端队列(Deque) 算法应用 队列(Queue) 特点: 和栈不同,队列的最大特点是先进先出(FIFO),就好像按顺序排队一样.对于 ...

  5. 简单介绍python的双向队列

    介绍 大家都知道利用 .append 和 .pop 方法,我们可以把列表当作栈或者队列来用(比如,把 append 和 pop(0) 合起来用,就能模拟栈的“先进先出”的特点).但是删除列表的第一个元 ...

  6. Python_collections_deque双向队列

    deque:创建一个双向队列 import collections collections.deque(['nihao','x']) x.append():在列表的右边添加 x.appendleft( ...

  7. STL之双向队列(dequeue)

    //双向队列 deque #include <deque> #include <cstdio> #include <algorithm> using namespa ...

  8. Python collections系列之双向队列

    双向队列(deque) 一个线程安全的双向队列 1.创建一个双向队列 import collections d = collections.deque() d.append(') d.appendle ...

  9. C++ Double Ended Queues(双向队列)

    双向队列和向量很相似,但是它允许在容器头部快速插入和删除(就像在尾部一样). Constructors 创建一个新双向队列 Operators 比较和赋值双向队列 assign() 设置双向队列的值 ...

随机推荐

  1. Xamarin.Forms的基本页面和基本视图

    Xamarin.Forms的基本页面和基本视图   在Xamarin.Forms中,每个App的界面都是一个页面Page.页面的种类有很多种.其中,最常见的页面就是内容页面ContentPage.项目 ...

  2. inotify+rsync实现实时同步(附解决crontab中无法执行python脚本的问题)

    1.准备环境 # 系统支持的话,下面的目录就会存在 ls /proc/sys/fs/inotify/ rpm -qa inotify-tools yum -y install inotify-tool ...

  3. POJ 3660 Cow Contest 传递闭包+Floyd

    原题链接:http://poj.org/problem?id=3660 Cow Contest Time Limit: 1000MS   Memory Limit: 65536K Total Subm ...

  4. 具体一些的博弈论 sqrstone

    Description 你有n个盒子用来放石头,每个盒子都有最大容量与初始的石头数, 两个人轮流放石头,每次必须选择一个盒子往里放数量不超过当前盒子中石头数的平方的石头 比如一个盒子当前有3个石头,你 ...

  5. @RequestParam,@PathVariable,@ResponseBody,@RequestBody,@ModelAttribute学习

    1.@RequestParam使用于参数上,用于将请求参数映射到指定参数变量上 例如: @RequestMapping(value="/hello",method=RequestM ...

  6. 如何突破Windows环境限制打开“命令提示符”

    如今,许多企业或组织都会通过使用受限的windows环境来减少系统表面的漏洞.系统加固的越好,那么也就意味着能被访问和使用到的功能就越少. 我最近遇到的情况是,一个已经加固的系统同时受到McAfee ...

  7. 关于Oracle中sysoper这个系统权限的问题

    我们都知道Oracle数据库安装完之后.默认的会有这样几个系统角色或权限.nomal,sysdba,sysoper等等,之前每次登录Oracle的时候.都是直接以conn / as sysdba 的身 ...

  8. vue 给组件绑定原生事件

    有时候,你可能想在某个组件的根元素上监听一个原生事件.可以使用 v-on 的修饰符 .native.例如: <my-component v-on:click.native="doThe ...

  9. construct-binary-tree-from-preorder-and-inorder-traversal——前序和中序求二叉树

    Given preorder and inorder traversal of a tree, construct the binary tree. Note:  You may assume tha ...

  10. Swift----编程语言语法

    1   简单介绍 今天凌晨Apple刚刚公布了Swift编程语言,本文从其公布的书籍<The Swift Programming Language>中摘录和提取而成.希望对各位的iOS&a ...