3-08. 栈模拟队列(25)(ZJU_PAT 模拟)
主题链接: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行。
例子输入与输出:
序号 | 输入 | 输出 |
1 |
|
|
2 |
|
|
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的全部元素弹出压入s2
- for(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;
- }
版权声明:本文博主原创文章,博客,未经同意不得转载。
3-08. 栈模拟队列(25)(ZJU_PAT 模拟)的更多相关文章
- 剑指Offer——Java实现栈和队列的互模拟操作
剑指Offer--Java实现栈和队列的互模拟操作 栈模拟队列 题目:JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型. 思路:其实就是把队列正常入 ...
- PTA笔记 堆栈模拟队列+求前缀表达式的值
基础实验 3-2.5 堆栈模拟队列 (25 分) 设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q. 所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数: int IsFull(Sta ...
- Java数组模拟队列 + 优化
队列介绍 队列是一个有序列表,可以用数组或是链表来实现. 遵循先入先出的原则. 即:先存入队列的数据,要先取出.后存入的要后取出 示意图:(使用数组模拟队列示意图) 数组模拟队列 队列本身是有序列表 ...
- Python笔记_第二篇_面向过程_第二部分_2.路径、栈和队列、内存修改
这一部分分三个主题进行讲解,主要为后面的模块.包.第三方库的概念补充一些相关的内容. 1. 路径(Path): 相对路径和绝对路径. 举例1:我们先导入一个os库(模块)来观察一下路径 import ...
- 7-3 堆栈模拟队列(25 point(s)) 【数据结构】
7-3 堆栈模拟队列(25 point(s)) 设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q. 所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数: int IsFull(Stac ...
- JavaScript数组模拟栈和队列
*栈和队列:js中没有真正的栈和队列的类型 一切都是用数组对象模拟的 栈:只能从一端进出的数组,另一端封闭 FILO 何时使用:今后只要仅希望数组只能从一端进 ...
- 【DataStructure In Python】Python模拟栈和队列
用Python模拟栈和队列主要是利用List,当然也可以使用collection的deque.以下内容为栈: #! /usr/bin/env python # DataStructure Stack ...
- python--递归(附利用栈和队列模拟递归)
博客地址:http://www.cnblogs.com/yudanqu/ 一.递归 递归调用:一个函数,调用的自身,称为递归调用 递归函数:一个可以调用自身的函数称为递归函数 凡是循环能干的事,递归都 ...
- php中数组模拟队列、栈的函数以及数组指针操作
1,数组指针,current表示当前指针,输出其指向的元素:next表示指针移动到下一个元素:prev指针移动到上一个元素:end表示指针移动到最后一个元素:reset表示指针移动到第一个元素: &l ...
随机推荐
- Android permission 访问权限
程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 完整列表如下: android.permission.ACCESS_CHECKIN_PROPERTIES ...
- android细节之禁用activity的系统的默认切换效果
网上有非常多方法来禁用系统的默认效果,这里贴上来我觉得最简单的方法. overridePendingTransition(Animation.INFINITE, Animation.INFINITE) ...
- 一个测试SQL2005数据库连接JSP档
在这里,在SQL 2005中间InterLib数据库案例.得到InterLib/tb_booktype目录. 的影响,如下面的: watermark/2/text/aHR0cDovL2Jsb2cuY3 ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (初级)
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (初级) 企业库提供了一个很强大的验证应用程序模 ...
- activity点击时各种方法的区别
用到不同方法时候某些系统有不太一样的情况: public class MainActivity extends Activity { private static String TAG = " ...
- ASP.NET 应用程序生命周期
1.请求到达IIS服务器,IIS根据文件后缀找到对应的ISAPI(Internet Server API)扩展来处理,这个配置可在网站属性里的“根目录”选项卡中的“配置”里看到.可以看到,ashx.a ...
- [置顶] 最优间隔分类器、原始/对偶问题、SVM的对偶问题——斯坦福ML公开课笔记7
转载请注明:http://blog.csdn.net/xinzhangyanxiang/article/details/9774135 本篇笔记针对ML公开课的第七个视频,主要内容包括最优间隔分类器( ...
- iOS UIWebView 载入https 网站出现NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL,
今天在载入https网站的时候遇到例如以下的错误问题.所以对自己之前写的iOS内嵌webview做了一些改动,能够让它载入http网站也能够让它载入https网站. 以下是我载入https网站的时候出 ...
- 玩转html5(四)----使用canvas画一个时钟(可以动的哦!)
先给个效果图,我画的比较丑,大家可以自己美化一下, 直接上代码: <!DOCTYPE html> <meta charset="utf-8"> <ht ...
- PV操作——生产者和消费者
首先,先来看几个概念: 同步:协作的过程,比如,多人开发合作. 相互排斥:争抢资源的过程.比如苦逼的大学选课: 临界区:进程中对临界资源实施操作的那段程序: 临界资源:一次仅仅能一个进程使用的资源,比 ...