双端队列篇deque SDUT OJ 双向队列
双向队列
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;
}
双端队列篇deque SDUT OJ 双向队列的更多相关文章
- [LeetCode] Design Circular Deque 设计环形双向队列
Design your implementation of the circular double-ended queue (deque). Your implementation should su ...
- [LeetCode] 641.Design Circular Deque 设计环形双向队列
Design your implementation of the circular double-ended queue (deque). Your implementation should su ...
- Java 双端队列接口 Deque
Deque 是一种支持在两端进行操作的线性结构,包含了栈和队列的功能.Java 中建议使用 Dqueue 的实现来替代遗留的 Stack 类.本文将介绍 Deque 提供的主要 API. 双端操作 A ...
- 队列(Queue)\双端队列(Deque)
队列(Queue)\双端队列(Deque) 队列(Queue) 双端队列(Deque) 算法应用 队列(Queue) 特点: 和栈不同,队列的最大特点是先进先出(FIFO),就好像按顺序排队一样.对于 ...
- 简单介绍python的双向队列
介绍 大家都知道利用 .append 和 .pop 方法,我们可以把列表当作栈或者队列来用(比如,把 append 和 pop(0) 合起来用,就能模拟栈的“先进先出”的特点).但是删除列表的第一个元 ...
- Python_collections_deque双向队列
deque:创建一个双向队列 import collections collections.deque(['nihao','x']) x.append():在列表的右边添加 x.appendleft( ...
- STL之双向队列(dequeue)
//双向队列 deque #include <deque> #include <cstdio> #include <algorithm> using namespa ...
- Python collections系列之双向队列
双向队列(deque) 一个线程安全的双向队列 1.创建一个双向队列 import collections d = collections.deque() d.append(') d.appendle ...
- C++ Double Ended Queues(双向队列)
双向队列和向量很相似,但是它允许在容器头部快速插入和删除(就像在尾部一样). Constructors 创建一个新双向队列 Operators 比较和赋值双向队列 assign() 设置双向队列的值 ...
随机推荐
- Unity3d Inspector面板实现set/get访问器
简单说一下属性和字段的区别:字段就是成员变量,而属性确实提供给外部访问内部成员变量的接口.之所以会有属性的出现,就是为了避免外部对类的成员的直接访问,通俗的说就是OOP中的封装思想. using Un ...
- MQTT协议介绍
http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.pdf MQTT 文档 http://mqtt.org/new/wp-c ...
- 自签名证书安全性问题研究https(ssl)
先看下https(ssl)的好处,以及为什么要用: http://imweb.io/topic/565c71673ad940357eb99879 https://zh.wikipedia.org/wi ...
- MySQL的1067错误
1.打开my.ini文件,找到default-storage-engine=InnoDB这一行,把它改成default-storage-engine=MyISAM.*** my.ini必须为ansi格 ...
- C#报错"线程间操作无效: 从不是创建控件“XXX”的线程访问它"--解决示例
C# Winform程序中,使用线程对界面进行更新需要特殊处理,否则会出现异常“线程间操作无效: 从不是创建控件“taskView”的线程访问它.” 在网文“http://www.cnblogs.co ...
- Laravel 设置语言不生效的问题
使用了validate 验证,提示错误默认是 英文的.将en 改为zh-CN 后 运行 composer require "overtrue/laravel-lang:~3.0"时 ...
- ubuntu + lamp + laravel 环境配置
首先是LAMP 安装顺序是 A(Apache服务器) M(Mysql) P(Php) 安装apache sudo apt-get install apache2 安装mysql sudo apt-g ...
- C++卷积神经网络实例:tiny_cnn代码具体解释(7)——fully_connected_layer层结构类分析
之前的博文中已经将卷积层.下採样层进行了分析.在这篇博文中我们对最后一个顶层层结构fully_connected_layer类(全连接层)进行分析: 一.卷积神经网路中的全连接层 在卷积神经网络中全连 ...
- 后台运行命令:&和nohup command & 以及关闭、查看后台任务
当我们在终端或控制台工作时.可能不希望由于执行一个作业而占住了屏幕,由于可能还有更重要的事情要做,比方阅读电子邮件. 对于密集訪问磁盘的进程,我们更希望它可以在每天的非负荷高峰时间段执行(比如凌晨). ...
- restframework-总结
1. 规范 - 版本控制 - 部署专用的域名(防止跨域攻击) - 因为restframework又称为面向资源的编程所以url名词需要用专业的名词去表示 - 请求方式method - url上可以传递 ...