双向队列

Time Limit: 1000MS Memory limit: 65536K

题目描述

想想双向链表……双向队列的定义差不多,也就是说一个队列的队尾同时也是队首;两头都可以做出队,入队的操作。
现在给你一系列的操作,请输出最后队列的状态;
命令格式:
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 双端队列的典型操作模拟题!一开始读错题了,WA一次!
注意:先输出处理完这m条命令后 队列里还有什么数据, 然后再依次输出报错的指令信息!
#include <iostream>
#include <string>
#include <stdio.h>
#include <string.h>
#include <map>
#include <stack>
#include <deque> //双端队列
#include <algorithm>
#include <ctype.h> using namespace std; int a[20000], e; int main()
{
int m;
cin>>m;
int i, j, dd;
string s;
deque<int>q;
deque<int>::iterator it; for(i=1; i<=m; i++)
{
cin>>s;
if(s=="LIN")
{
cin>>dd;
q.push_front(dd);
}
else if(s=="RIN")
{
cin>>dd;
q.push_back(dd);
}
else if(s=="LOUT")
{
if(q.empty())
{
a[e++]=i;
}
else
{
q.pop_front();
}
}
else if(s=="ROUT")
{
if(q.empty())
{
a[e++]=i;
}
else
{
q.pop_back();
}
}
} int flag=0;
for(it=q.begin(); it!=q.end(); it++)
{
if(flag==0)
{
printf("%d", *it );
flag=1;
}
else if(flag==1)
{
printf(" %d", *it );
}
} if(flag==1)
{
printf("\n"); //如果flag==1 就表示最后状态的队列里还有数据,输出完这些数据后就要输出换行! 如果flag==0, 则没有必要换行了!
}
for(j=0; j<e; j++)
{
printf("%d ERROR\n", a[j] );
}
return 0;
}
 

最新文章

  1. 深入理解DOM事件机制系列第一篇——事件流
  2. python(六)内置函数
  3. Java语言基础相关问题
  4. [LeetCode] Longest Palindromic Substring(manacher algorithm)
  5. html form一点基础知识,实现文件上传
  6. Java命令行实用工具jps和jstat
  7. bzoj2734: [HNOI2012]集合选数
  8. 1-jQuery - AJAX load() 方法【基础篇】
  9. JAVA课程设计 猜数游戏 团队
  10. partition length exceeds the loop-partition-table-imposed maximum of 4294967295
  11. 【倍增】洛谷P3379 倍增求LCA
  12. app测试中遇到问题总结
  13. java线程池原理
  14. linux 图形化与命令模式切换
  15. 生成Release apk
  16. MyBatis3-动态SQL语句
  17. bzoj千题计划179:bzoj1237: [SCOI2008]配对
  18. socket编程时使用了inet_ntoa函数,存储到链表中的数据总是自动改变
  19. Android-sdcard广播的接收处理
  20. CDOJ 1292 卿学姐种花 暴力 分块 线段树

热门文章

  1. 虚拟机centos 同一个tomcat、不同端口访问不同的项目
  2. Java爬虫系列二:使用HttpClient抓取页面HTML
  3. BZOJ——2134: 单选错位
  4. Cookie安全与CSRF和XSS攻击知识点收集
  5. SQL SERVER 内存
  6. 邁向IT專家成功之路的三十則鐵律 鐵律八:IT人學習之道-基礎功
  7. 网页Tab控件
  8. 【翻译自mos文章】检查$ORACLE_HOME是否是RAC的HOME的方法以及relink RAC的Oracle binary的方法
  9. 如何在Linux中使用sFTP上传或下载文件与文件夹
  10. 串匹配算法之BM算法