双向队列

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

提示

 

来源

wanglin

演示样例程序

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <iostream>
#include <queue>
using namespace std;
int flag[10010];
int main()
{
deque<int >q;
int n,m,i,k;
char str[10];
memset(flag,0,sizeof(flag));
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%s",str);
if(strcmp(str,"LIN")==0)
{
cin>>m;
q.push_front(m);
}
else if(strcmp(str,"RIN")==0)
{
cin>>m;
q.push_back(m);
}
else if(strcmp(str,"LOUT")==0)
{
if(!q.empty())
q.pop_front();
else
flag[i]=1;
}
else if(strcmp(str,"ROUT")==0)
{
if(!q.empty())
q.pop_back();
else
flag[i]=1;
} }
k=q.front();
q.pop_front();
cout<<k<<' ';
while(!q.empty())
{
k=q.front();
q.pop_front();
cout<<k<<' ';
}
cout<<endl;
for(i=1;i<=n;i++)
{
if(flag[i])
cout<<i<<" "<<"ERROR"<<endl;
}
}



双向队列(STL做法)的更多相关文章

  1. 双向队列 STL

    题目描述 想想双向链表……双向队列的定义差不多,也就是说一个队列的队尾同时也是队首:两头都可以做出队,入队的操作.现在给你一系列的操作,请输出最后队列的状态:命令格式:LIN X  X表示一个整数,命 ...

  2. STL之deque双向队列

    deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,提供随机访问,deque在接口上和vector非常相似,下面列出deque的常用成员函数: Table 6.9. C ...

  3. stl中双向队列用法

    双向队列的操作如下: d[i]:返回d中下标为I的元素的引用. d.front():返回的一个元素的引用. d.back():返回最后一个元素的引用. d.pop_back():删除尾部的元素.不返回 ...

  4. STL之deque(双向队列)

    deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似,下面列出deque的常用成员函数: deque在vector函数的基础上增 ...

  5. STL --> deque双向队列

    deque简介 deque是双向开口的连续性存储空间.虽说是连续性存储空间,但这种连续性只是表面上的,实际上它的内存是动态分配的,它在堆上分配了一块一块的动态储存区,每一块动态存储去本身是连续的,de ...

  6. STL之双向队列(dequeue)

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

  7. 队列(Queue)--环形队列、优先队列和双向队列

    1. 队列概述 队列和堆栈都是有序列表,属于抽象型数据类型(ADT),所有加入和删除的动作都发生在不同的两端,并符合First In, First Out(先进先出)的特性. 特性: ·FIFO ·拥 ...

  8. deque双向队列(转)

    deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似,下面列出deque的常用成员函数:   deque的实现比较复杂,内部会维 ...

  9. HDU--杭电--3415--Max Sum of Max-K-sub-sequence--队列--双向队列

    Max Sum of Max-K-sub-sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

随机推荐

  1. C++中四种强制类型转换方式

    类型转换有c风格的,当然还有c++风格的.c风格的转换的格式很简单(TYPE)EXPRESSION,但是c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,比 ...

  2. Hive 执行sql命令报错

    Failed with exception java.io.IOException:java.lang.IllegalArgumentException: java.net.URISyntaxExce ...

  3. localstorage与sessionstorage的使用

    cookie,sessionStorage,localeStorage的区别 cookie是存储在浏览器端,并且随浏览器的请求一起发送到服务器端的,它有一定的过期时间,到了过期时间自动会消失.sess ...

  4. 【LeetCode】String Without AAA or BBB(不含 AAA 或 BBB 的字符串)

    这道题是LeetCode里的第984道题. 题目要求: 给定两个整数 A 和 B,返回任意字符串 S,要求满足: S 的长度为 A + B,且正好包含 A 个 'a' 字母与 B 个 'b' 字母: ...

  5. CoCoS 2D-JS的开发环境搭建

    CoCoS 2D-JS的开发环境搭建 在Hbuilder中新建web项目,将cocos2d-js-v3.9.js复制到在js文件夹下,将project.json复制到工程的根目录下 在index.ht ...

  6. Zuma (区间DP)

    Genos recently installed the game Zuma on his phone. In Zuma there exists a line of n gemstones, the ...

  7. ajax 原生 post

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 持续集成---jenkins环境部署

    一.环境准备 操作系统:linux系统,此时我安装的是centos6.5,操作步骤具体见博客<虚拟机安装centos6.5> 依赖软件:1.jdk, 2.tomcat9(需要安装两个,一个 ...

  9. BZOJ 2882 工艺 ——后缀自动机 最小表示法

    先说后缀自动机的做法. 直接把S串复制一遍成SS,然后建立后缀自动机,go边相当于在当前字符的后面插入,而son边可以看作在字符串前面加一个字符. 所以贪心的走字典序最小的边即可,而且根据后缀自动机的 ...

  10. 【2017YYHS WC】

    因为本葳蕤分数太低去不了WC,只能同去WC的各位大爷一起训练一波,就称作是YYHS WC吧,其实就是WC难度的多校 day1:早上8:30考的试,下午1:00去吃中饭 T1:考场打得暴力结果矩阵乘法后 ...