7-4 堆栈模拟队列 (25 分)

7-4 堆栈模拟队列 (25 分)

设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q。

所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数:

int IsFull(Stack S):判断堆栈S是否已满,返回1或0;
int IsEmpty (Stack S ):判断堆栈S是否为空,返回1或0;
void Push(Stack S, ElementType item ):将元素item压入堆栈S;
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行。
输入样例:

3 2 A 1 A 2 A 3 A 4 A 5 D A 6 D A 7 D A 8 D D D D T

输出样例:
ERROR:Full
1
ERROR:Full
2
3
4
7
8
ERROR:Empty

这道题我一开始用的stl,后来遇到重题了,就用数组模拟了一遍,发现用stl真的是很简单。下面分别附上stl和非stl的方法。

//stl实现
#include <bits/stdc++.h>
using namespace std;
int main()
{stack<int>s1,s2;int m,n,t;cin>>m>>n;if (n>m){t=m;m=n;n=t;}      //s2 smallerchar c;int num;getchar();while (1){scanf("%c",&c);        //A 1 A 2 A 3 A 4 A 5 D A 6 D A 7 D A 8 D D D D Tif (c=='T'){break;}if (s2.size()==n&&s1.empty()){while(!s2.empty()){s1.push(s2.top());s2.pop();}}if (c=='A'&&s2.size()!=n){scanf("%d ",&num);s2.push(num);}else if (c=='A'&&s2.size()==n){scanf("%d",&num);printf("ERROR:Full\n");}if (c=='D'&&s1.empty()){printf("ERROR:Empty\n");}else if (c=='D'&&!s1.empty()){printf("%d\n",s1.top());s1.pop();}}return 0;
}

//数组构建栈模拟
#include <bits/stdc++.h>
using namespace std;
int main()
{int n1,n2,top1=-1,top2=-1,t;cin>>n1>>n2;        //n2是比较小的if (n2>n1){t=n1;n1=n2;n2=t;}getchar();int s1[100],s2[100];         //3 2char c;							//A 1 A 2 A 3 A 4 A 5 D A 6 D A 7 D A 8 D D D D Tint x;scanf("%c",&c);while (c!='T'){if (c=='A'){if(top2<n2-1)      //如果短的2没满,一直填充到2.{scanf("%d",&x);s2[++top2]=x;getchar();}else if (top2==n2-1&&top1!=-1)      //如果2满了但是1不为空,此时无法进行数据移动,输出FULL. {scanf("%d",&x);getchar();printf("ERROR:Full\n");}else if (top2==n2-1&&top1==-1)    //如果2满了但是1是空的,数据移动,全部移过去. {while (top2!=-1){s1[++top1]=s2[top2--];}scanf("%d",&x);s2[++top2]=x;getchar();}}if (c=='D'){getchar();if (top1!=-1)                    //如果1不是空的,先输出1,因为他的数输入的更早. {printf("%d\n",s1[top1--]);}else if (top2!=-1&&top1==-1)          //如果2不是空的但是1是空的,转换数据,再输出. {while (top2!=-1){s1[++top1]=s2[top2--];}printf("%d\n",s1[top1--]);}else if (top1==-1&&top2==-1)         //都是空的,输出错误提示. {printf("ERROR:Empty\n");}}scanf("%c",&c);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

H5唤醒app,不完全兼容

---ps---最近新发现一个开源的H5唤醒app的库&#xff1a;建议使用第三方开源库https://github.com/suanmei/callapp-lib实现&#xff1b;或者极光魔链&#xff08;后期可能会收费&#xff09;https://www.cnblogs.com/SimonHu1993/p/10578775.html<script type"text/ja…

7-5 列车厢调度 (25 分)

7-5 列车厢调度 (25 分) 1 <--移动方向/ 3 \2 -->移动方向大家或许在某些数据结构教材上见到过“列车厢调度问题”&#xff08;当然没见过也不要紧&#xff09;。今天&#xff0c;我们就来实际操作一下列车厢的调度。对照上方的ASCII字符图&#xff0c…

64位系统下,一个32位的程序究竟可以申请到多少内存,4GB还是更多

前言&#xff1a; cpu的位是指一次性可处理的数据量是多少&#xff0c;1字节8位&#xff0c;32位处理器可以一次性处理4个字节的数据量&#xff0c;依次类推。32位操作系统针对的32位的CPU设计。64位操作系统针对的64位的CPU设计。操作系统只是硬件和应用软件中间的一个平台。我…

长二F发射神十二飞船圆满成功!三名航天员飞向空间站天和核心舱

来源&#xff1a;中国航天科技集团文&#xff1a;陈立 刘岩编辑&#xff1a;杨成 高一鸣校对&#xff1a;林佳昕监制&#xff1a;索阿娣6月17日9时22分长征二号F运载火箭点火起飞中国航天员聂海胜、刘伯明、汤洪波乘坐神舟十二号载人飞船在“神箭”长二F托举下从酒泉卫星发射中…

codevs 3288 积木大赛

3288 积木大赛 &#xff08;2013年NOIP全国联赛提高组&#xff09; 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 春春幼儿园举办了一年一度的“积木大赛”。今年比赛的内容是搭建一座宽度为 n 的大厦&#xff0c;大厦可以看成由 n 块宽…

定义变量类型

typedef unsigned long DWORD; typedef int BOOL; typedef unsigned char BYTE; typedef unsigned short WORD; typedef float FLOAT; typedef void far *LPVOID; typedef int INT; typedef unsigned int UINT; 变量的“匈牙利表示法”&#xff1a; lp为前缀&#xff1a;指针类…

.net core中不支持GB2312编码的问题

今天在用core实现读取文件内容时出现了中文乱码的问题&#xff0c;特此记录下。代码如下&#xff1a;static void Main(string[] args){string path "F:\\1.txt";StreamReader sr new StreamReader(path, Encoding.Default);String line;while ((line sr.ReadLine…

java中Scanner类的使用

1.导入包 java.util.Scanner; 代码 import java.util.Scanner;&#xff08;不要忘记分号&#xff09; 2.创建Scanner对象 代码&#xff1a;Scanner inputnew Scanner(System.in); 3.创建变量接受输入 代码&#xff1a; int ainput.nextInt(); 显然&#xff0c;此代码只能输入一…

脑机融合技术的哲学审思

来源&#xff1a;《科学技术哲学研究》2020年第6期作者&#xff1a;张学义&#xff08;东南大学哲学与科学系&#xff09;潘平平&#xff08;华为南京所&#xff09;庄桂山&#xff08;东南大学成贤学院&#xff09;国家社科基金重大项目“问题哲学理论前沿与理论创新研究”(18…

“哪里有人喜欢孤独,不过是害怕失望罢了”———村上春树《东尼泷谷》观后感...

每个人发自内心的感受&#xff0c;都是孤独的&#xff0c;哪怕表面多么欢快。 ——By 浪漫Chopin 配乐&#xff1a; http://music.163.com/song/498210/?userid539620943 东尼的一生都是孤独的&#xff0c;生下来父亲带他到处流浪&#xff0c;对他不管不问。 他自己做饭&…

windows定时计划备份MySql

使用 MySql 的 mysqldump 将数据库文件备份成 sql 文件。 Windows下备份 本地的数据库环境 MySql 安装环境&#xff1a;C:\MySql 数据库名称&#xff1a;bbs root root 数据库备份目的地&#xff1a; D:/Data_BackUp echo off set "Ymd%date:~,4%%date:~5,2%%date:~8,2%&q…

“新一代城市大脑建设与发展“专家研讨会

2021年6月城市大脑全球标准研究组成员在国家级核心期刊发表论文&#xff08;6月末出版&#xff09;&#xff0c;阐述了关于城市大脑的最新进展&#xff0c;基于城市大脑全球标准研究&#xff0c;形成新一代城市大脑的“1N”模式建设方案和九个实施步骤&#xff1b;突出了直接应…

进程的控制——获取系统进程信息

获取系统进程 ToolHelp函数&#xff1b;CreateToolhelp32Snapshot函数获取当前系统内执行的进程拍快照&#xff08;Snapshot&#xff09;&#xff0c;即获得进程列表&#xff1b;Process32First函数和Process32Next函数遍历列表&#xff1b;快照头文件&#xff1a;#include<…

PHP随笔---简述var_dump()、print_r()、echo()

var_dump() 能打印出类型 print_r() 只能打出值 echo() 是正常输出… 需要精确调试的时候用 var_dump(); 一般查看的时候用 print_r() 另外 &#xff0c; echo不能显示数组 其余2个可以…

Science: 四万张大脑图像首次揭示人脑白质的基因基础

来源&#xff1a;青牛帮脑白质&#xff0c;是大脑内部神经纤维聚集的地方&#xff0c;由于其区域比细胞体聚集的大脑表层颜色浅&#xff0c;故名脑白质。人到了大约二十岁时&#xff0c;白质才会在不同脑区逐渐发育完全&#xff0c;而其生长的时机与成熟程度&#xff0c;会影响…

PHP 中错误控制符@

HP中提供了一个错误控制运算符“”&#xff0c;对于一些可能会在运行过程中出错的表达式时&#xff0c;我们不希望出错的时候给客户显示错误信息&#xff0c;这样对用户不友好。于是&#xff0c;可以将放置在一个PHP表达式之前&#xff0c;该表达式可能产生的任何错误信息都被忽…

tensorflow框架

基于Tensorflow的NN&#xff1a;用张量表示数据&#xff0c;用计算图搭建神经网络&#xff0c;用会话执行计算图&#xff0c;优化线上的权重&#xff08;参数&#xff09;&#xff0c;得到模型。 张量&#xff08;tensor&#xff09;:多维数组&#xff08;列表&#xff09; …

IMT-2030(6G)推进组发布《6G总体愿景与潜在关键技术》白皮书

来源&#xff1a;中国信通院CATCT编辑&#xff1a;蒲蒲当前&#xff0c;新一轮科技革命和产业变革突飞猛进&#xff0c;随着5G商用的大规模部署&#xff0c;全球业界已开启对下一代移动通信&#xff08;6G&#xff09;的探索研究。日前&#xff0c;IMT-2030(6G)推进组&#xff…

Win32程序执行单元-多线程

多线程&#xff1a;主线程在运行过程中&#xff0c;可以创建新的线程&#xff0c;这些线程可以共享进程的资源&#xff0c;如全局变量&#xff0c;句柄等&#xff1b;线程函数定义&#xff1a;DWORD WINAPI ThreadProcess(LPVOID lpParam); WINAPI 宏名&#xff0c;在windef.h有…