3-08. 堆栈模拟队列(25)(ZJU_PAT 模拟)
来源:互联网 发布:自助设计软件 编辑:程序博客网 时间:2024/05/19 18:38
题目链接:http://pat.zju.edu.cn/contests/ds/3-08
设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q。
所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数:
(1) int IsFull(Stack S):判断堆栈S是否已满,返回1或0;
(2) int IsEmpty (Stack S ):判断堆栈S是否为空,返回1或0;
(3) void Push(Stack S, ElementType item ):将元素item压入堆栈S;
(4) ElementType Pop(Stack S ):删除并返回S的栈顶元素。
实现队列的操作,即入队void AddQ(ElementType item)和出队ElementType DeleteQ()。
输入格式说明:
输入首先给出两个正整数N1和N2,表示堆栈S1和S2的最大容量。随后给出一系列的队列操作:“A item”表示将item入列(这里假设item为整型数字);“D”表示出队操作;“T”表示输入结束。
输出格式说明:
对输入中的每个“D”操作,输出相应出队的数字,或者错误信息“ERROR:Empty”。如果入队操作无法执行,也需要输出“ERROR:Full”。每个输出占1行。
样例输入与输出:
序号输入输出12 2A 1 A 2 D D T
122
3 2A 1 A 2 A 3 A 4 A 5 D A 6 D A 7 D A 8 D D D D T
ERROR:Full1ERROR:Full23478ERROR:Empty
PS:
个人觉得题意有点难理解!反正我是理解了好久!
代码如下:
#include <cstdio>#include <cstring>#include <iostream>#include <queue>#include <stack>using namespace std;stack<int>s1;//容量小的栈stack<int>s2;//容量大的栈int main(){int n1, n2;char c;while(~scanf("%d%d",&n1,&n2)){if(n1 > n2){int t = n1;n1 = n2;n2 = n1;}getchar();int tt;int flag = 0;for(int i = 0; ; i++){scanf("%c",&c);if(c == 'T')//结束输入break;if(c == 'A'){scanf("%d",&tt);if(s1.size()==n1 && s2.size()!=0)//如果栈s1满且栈s2不为空,则队满{printf("ERROR:Full\n");continue;}if(s1.size()!=n1)//如果栈s1没有满,直接压入s1.push(tt);else{int len = s1.size();//如果栈s1满,把栈s1的所有元素弹出压入s2for(int i = 0; i < len; i++){int t = s1.top();s1.pop();s2.push(t);}s1.push(tt);//压入s1}}else if(c == 'D'){if(s1.size()==0 && s2.size()==0){printf("ERROR:Empty\n");continue;}if(s2.size() == 0)//若栈s2空就将s1中的所有元素弹出到栈s2中,然后出栈{int len = s1.size();for(int i = 0; i < len; i++){int t = s1.top();s1.pop();s2.push(t);}}printf("%d\n",s2.top());s2.pop();}}}return 0;}
1 0
- 3-08. 堆栈模拟队列(25)(ZJU_PAT 模拟)
- 3-08. 堆栈模拟队列(25)
- 3-08. 堆栈模拟队列(25)
- PAT1024. 堆栈模拟队列(25)
- 浙大PAT 3-08. 堆栈模拟队列 (解题思路)
- PAT3-08. 堆栈模拟队列
- 堆栈与队列模拟
- 堆栈模拟队列
- PAT堆栈模拟队列
- 堆栈模拟队列
- 5-22 堆栈模拟队列 (25分)
- 5-22 堆栈模拟队列 (25分)
- 2-09. 装箱问题模拟(20) (ZJU_PAT 模拟)
- 用堆栈模拟队列,和用队列模拟堆栈
- 用堆栈模拟队列,和用队列模拟堆栈
- 两个队列模拟一个堆栈
- 使用堆栈来模拟队列
- 两个队列模拟一个堆栈
- HDU 3328 Flipper 栈的应用
- 分数求和
- Linux上mysql服务的安装与配置
- 【cocos2dx 3.2】一个都不能死1 分析
- openwrt中luci学习笔记
- 3-08. 堆栈模拟队列(25)(ZJU_PAT 模拟)
- Cocos2d-x学习笔记(七)-------->Button控件
- hdoj 1087 Super Jumping! Jumping! Jumping!(动态规划)
- ssh框架整合范例
- 深入理解ConcurrentMap.putIfAbsent(key,value) 用法
- 数据结构之树
- HDU 1276 士兵队列训练问题
- 为什么要写博客
- 使用 在Xcode下配置git和github