双向队列
来源:互联网 发布:费用优化例题 编辑:程序博客网 时间:2024/05/01 09:56
双向队列
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
提示
来源
wanglin
示例程序
#include<stdio.h> #include<string.h> struct node { int data[30000]; int top1; int top2; }S; int main() { int i,j,n,m,k,t; int a[10010]; char b[20]; scanf("%d",&n); S.top1=15000; S.top2=14999; j=0; for(i=1;i<=n;i++) { scanf("%s",b); if(strcmp(b,"LIN")==0) { S.top1--; scanf("%d",&S.data[S.top1]); } if(strcmp(b,"RIN")==0) { S.top2++; scanf("%d",&S.data[S.top2]); } if(strcmp(b,"LOUT")==0) { if(S.top1>S.top2) a[j++]=i; else { S.top1++; } } if(strcmp(b,"ROUT")==0) { if(S.top1>S.top2) a[j++]=i; else { S.top2--; } } } for(i=S.top1;i<=S.top2;i++) if(i==S.top1) printf("%d",S.data[i]); else printf(" %d",S.data[i]); printf("\n"); for(i=0;i<j;i++) printf("%d ERROR\n",a[i]); }
0 0
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 链表-删除指定元素
- 第一次写博客,记录这一时刻
- Bitcode是什么?
- oslec.lib找不到解决办法
- Opengl投影矩阵和世界及局部坐标操作
- 双向队列
- VMware Workstation获取不到IP地址
- 求素数
- weiphp-我的第一个插件
- maven如何打WAR包,看到target目录下面会生成JAR包,如何改成WAR?
- jdk环境变量配置
- 微软SqlHelper.cs数据访问帮助类
- 编译webrtc到pjsip中的方法
- 记录点滴