双向队列
来源:互联网 发布:品牌授权网络销售合同 编辑:程序博客网 时间:2024/05/01 07:08
双向队列
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
想想双向链表……双向队列的定义差不多,也就是说一个队列的队尾同时也是队首;两头都可以做出队,入队的操作。
现在给你一系列的操作,请输出最后队列的状态;
命令格式:
LIN X X表示一个整数,命令代表左边进队操作;
RIN X 表示右边进队操作;
ROUT
LOUT 表示出队操作;
输入
第一行包含一个整数M(M<=10000),表示有M个操作;
以下M行每行包含一条命令;
命令可能不合法,对于不合法的命令,请在输出中处理;
输出
输出的第一行包含队列进行了M次操作后的状态,从左往右输出,每两个之间用空格隔开;
以下若干行处理不合法的命令(如果存在);
对于不合法的命令,请输出一行X ERROR
其中X表示是第几条命令;
示例输入
8LIN 5RIN 6LIN 3LOUTROUTROUTROUTLIN 3
示例输出
37 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); }}
0 0
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- HC-SR501 人体红外感应模块
- php学习整理之mysql(三)配置php使其支持mysql
- 二叉树中和为某一值的路径
- LaTeX学习教程 持续更新
- java之栈的压入和弹出
- 双向队列
- 数位类统计问题ural 1057
- Linux Rootkit之二:Linux模块加载与信息隐藏
- 【万里征程——Windows App开发】如何在多个页面间读取/保存文件【草稿】
- 排队买饭
- D3可视化
- OGG配置一
- BlenderPython (一)介绍及安装
- android基础学习之edit的详解