双向队列
2015-06-16 21:53
211 查看
双向队列
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
提示
#include<stdio.h> #include<string.h> int main() { int biao[100000]; int n,i,j,k; char s[10]; int a[1000000]; while(~scanf("%d",&n)) {memset(biao,0,sizeof(biao)); int top=0; for(k=1;k<=n;k++) { scanf("%s",s); if(strcmp(s,"LIN")==0) {top++; if(top!=1) for(i=top;i>=1;i--) a[i]=a[i-1]; scanf("%d",&a[0]); } else if(strcmp(s,"RIN")==0) { scanf("%d",&a[top]); top++; } else if(strcmp(s,"LOUT")==0) { if(top>0) {for(i=0;i<top;i++) a[i]=a[i+1]; top--; } else biao[k]=1; } else if(strcmp(s,"ROUT")==0) { if(top>0) top--; else biao[k]=1; } } int kkk=0; if(top!=0) {for(i=0;i<top;i++) { if(kkk==0) kkk=1; else printf(" "); printf("%d",a[i]); } printf("\n"); } for(i=1;i<=n;i++) if(biao[i]==1) printf("%d ERROR\n",i); } }
相关文章推荐
- 湖南卫视直播tv
- Python-django安装
- HC-SR501 人体红外感应模块
- LaTeX学习教程 持续更新
- php学习整理之mysql(三)配置php使其支持mysql
- 二叉树中和为某一值的路径
- 快速幂取模模板 && 51nod 1013 3的幂的和
- 品读程序员晋级之路
- 走迷宫
- Ubuntu 14.04 启用休眠
- 第二次站立会议3
- LeetCode:Count Primes
- phpstudy在linux下的初体验-----php文件放置目录
- Ubuntu的挂起和休眠
- Android源码项目目录结构
- 全局程序集GlobalAssemblyInfo.cs进行版本控制(引)
- 怎样在win7上远程连接linux系统
- Qt中使用GridLayout如何设置一个按钮占两个位置
- rsyslog netconsole(debian)二
- Execution failed for task ':dexDebug' Android Studio 编译失败