专栏首页刷题笔记3-9 堆栈模拟队列 (20 分)

3-9 堆栈模拟队列 (20 分)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/shiliang97/article/details/101223979

3-9 堆栈模拟队列 (20 分)

设已知有两个堆栈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()

输入格式:

输入首先给出两个正整数N1N2,表示堆栈S1S2的最大容量。随后给出一系列的队列操作: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

吃老本系列,暑假做过的原题。。。又出现又不会

当时的解题思路

#include<iostream>
#include<vector> 
using namespace std;
int a,b,n,s1count=0,s2count=0,s1[100],s2[100];
int main(){
	cin>>a>>b;
	a>b? a=b:b=a;
	char c;
	while(cin>>c&&c!='T'){
		if(c=='A'){cin>> n;
			if(s1count>0&&s2count==b)cout<<"ERROR:Full"<<endl; 
			else if(s2count<b)s2[s2count++]=n;
			if(s2count==b&&s1count==0)while(s2count!=0)s1[s1count++]=s2[--s2count];
		}
		else if(c=='D'){
			if(s1count==0&&s2count!=0)while(s2count!=0)s1[s1count++]=s2[--s2count];
			if(s1count==0&&s2count==0)cout<<"ERROR:Empty"<<endl; 
			if(s1count!=0)cout<<s1[--s1count]<<endl;
			if(s2count==b&&s1count==0)while(s2count!=0){s1[s1count++]=s2[--s2count];}
		} 
	}
return 0;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

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

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    韩旭051
  • 【LeetCode每日一题】第二天 836. 矩形重叠

    矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。

    韩旭051
  • 1044 火星数字 (20 分)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    韩旭051
  • linux下安装php的imagick扩展模块(附php升级脚本)

    imagick是一个PHP的扩展,是一套软件系列,用ImageMagick提供的API来进行图片的创建与修改,不过这些操作已经包装到扩展imagick中去了,最...

    洗尽了浮华
  • pandas入门①数据统计

    本指南直接来自pandas官方网站上的10分钟pandas指南。 我将它改写以使代码更易于访问。 本指南适用于之前未使用pandas的初学者。

    用户1359560
  • 十分钟掌握Pandas基本操作(下)

    对于Pandas的基本操作我们就总结到这里,这个数据集还可以用来做机器学习,把宝可梦的类型作为标签来预测,或是把是否是神兽作为标签来做二分类等等,我们下回见。

    老肥码码码
  • Tableau可视化之其他常用图表

    导读:前几篇Tableau文章中,分别介绍了折线图、条形图、地图和饼图的几种用法,今天本文简单介绍其他几种常用的可视化图表类型。

    luanhz
  • 八个小诀窍帮你玩转网站背景图设计

    几乎所有设计师都知道网页设计中用图的重要性,但在实际项目中,如何做好图片设计?本文将与大家分享如何通过“把握图片的意图”做好设计。 给设计师的建议:做图前先别急...

    前朝楚水
  • Twitter美国航空公司情绪数据集的监督或半监督ULMFit模型

    我们的任务是将ULMFit(Ruder等人,2018)等监督/半监督技术应用于Twitter美国航空公司情绪分析数据。

    磐创AI
  • 用Python实现透视表的value_sum和countdistinct功能

    在pandas库中实现Excel的数据透视表效果通常用的是df['a'].value_counts()这个函数,表示统计数据框(DataFrame) df的列a...

    蛰虫始航

扫码关注云+社区

领取腾讯云代金券