7-22 堆栈模拟队列 (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

二:思路

这个题是创建两个栈,然后设置栈的容量,往栈的容量小的那个容器当中存入数据,
当其达到容量时,就将其中的数据转到另一个容器当中,
当其又达到容量时,判断 另一容器是否又元素 ,若有则输出 FULL;

输出时是从容量大的输出的 ,若其为空 则将容量小容器当中的元素 输到 容量大的容器当中,若都为空则输出Empty

三:上码

#include<bits/stdc++.h>
using namespace std;int main()
{int N1,N2;cin >> N1 >> N2; getchar();//除去换行符 stack<int>s1,s2;int temp = N1 < N2 ? N1:N2;char str;int num;while(1){cin >> str;if( str == 'T')break;if( str == 'A') {cin >> num;if(s1.size() == temp && !s2.empty()){cout << "ERROR:Full" << endl;}if(s1.size() == temp && s2.empty()){while(!s1.empty()){int num1 = s1.top();s1.pop();s2.push(num1);}	}if(s1.size() < temp){s1.push(num);	}	} if(str == 'D'){if( s2.empty() && !s1.empty() ){while(!s1.empty()){int num2 = s1.top();s1.pop();s2.push(num2);}				}if(!s2.empty()){   cout << s2.top() << endl;s2.pop();	}else if( s1.empty() && s2.empty()  ) {cout << "ERROR:Empty" << endl;}		}		  } return 0;
}//3 3
//A 1 A 2 A 3 A 4 A 5 D A 6 D A 7 D A 8 D D D D T

在这里插入图片描述

另一个码 测试数据没问题 就是过不去 把测试带点当中的 等容的 等都没问题(可能跟输入有关 ) 但还是很气愤 本想着简单着呢 写完后一提交就是过不去 ,结果测试各种数据没问题 迷茫 上网比较 了一下 觉得输入可能有问题 改了 就通过了 但我自己做的时候 还是觉得第一遍也没毛病呀 也上个码吧

#include<bits/stdc++.h>
using namespace std;int main()
{int N1,N2;cin >> N1 >> N2; getchar();//除去换行符 stack<char>s1,s2;string str;getline(cin,str);int temp = N1 < N2 ? N1:N2;for( int i = 0; i < str.size(); i=i+2 ){if(str[i] == 'A' && s1.size() == temp && !s2.empty()){cout << "ERROR:Full" << endl;}if( str[i] == 'A'){i++;//下一个是空格 i++;//再下一个才是数字 if(s1.size() == temp && s2.empty()){while(!s1.empty()){char num = s1.top();s1.pop();s2.push(num);}		}if(s1.size() < temp){   s1.push(str[i]);					}}	if( str[i] == 'D' ){if( s2.empty() && !s1.empty() ){while(!s1.empty()){char num = s1.top();s1.pop();s2.push(num);}				}if(!s2.empty()){   cout << s2.top() << endl;s2.pop();	}else if( s1.empty() && s2.empty()  ) {cout << "ERROR:Empty" << endl;}	}if( str[i] == 'T')return 0;//结束程序	} 
}//3 3
//A 1 A 2 A 3 A 4 A 5 D A 6 D A 7 D A 8 D D D D T

补充:关于第二个码 当中的设置栈的数据类型 我改过 int 类型了 还是过不去!

老样子 加油陌生的你 ,菜鸟努力努力努力努力 成 大佬

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

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

相关文章

What is 测试金字塔?

【答疑解惑】| 作者 / Edison Zhou这是恰童鞋骚年的第271篇原创内容我的女朋友是一名测试工程师&#xff0c;但她之前却不知道测试金字塔的概念&#xff0c;为此我曾经在家里的白板上画了一个图一层一层给她讲解过。我和同事在给团队面试测试和开发岗位时&#xff0c;也会必问到…

Mysql编码教程_mysql编码设置教程 mysql编码要怎么设置呢

mysql的默认编码是拉丁&#xff0c;每次JSP制作网页用insert语句插入数据库时汉字都会显示成问号&#xff0c;安装mysql后&#xff0c;启动服务并登陆&#xff0c;使用show variables命令可查看mysql数据库的默认编码:由上图可见database和server的字符集使用了latin1编码方式&…

技术脱钩后软硬件磨合优化不失为一条出路

从宏观上看&#xff0c;这一论的制裁只是一连串组合拳的一次攻击&#xff0c;将来&#xff0c;东亚大国和西方技术脱钩是大趋势。在这种背景下&#xff0c;宜建立红色产业链。指导方针是不过度追求局部指标的先进性&#xff0c;而是追求技术自主性&#xff0c;并把握整体性能达…

7-23 还原二叉树 (25 分)(分析加详解)

一&#xff1a;题目&#xff1a; 给定一棵二叉树的先序遍历序列和中序遍历序列&#xff0c;要求计算该二叉树的高度。 输入格式: 输入首先给出正整数N&#xff08;≤50&#xff09;&#xff0c;为树中结点总数。下面两行先后给出先序和中序遍历序列&#xff0c;均是长度为N的…

dotNET:怎样处理程序中的异常(实战篇)?

在上篇 《dotNET&#xff1a;怎样处理程序中的异常&#xff08;理论篇&#xff09;》 中讲了一些程序中出现异常怎样处理的理论知识&#xff0c;本文将以代码的方式来进行实践。环境dotNET Core&#xff1a;3.1工具&#xff1a;Rider 2019.3.2系统&#xff1a;macOS 10.15.4创建…

在 MySQL 中使用码农很忙 IP 地址数据库

在下载到码农很忙 IP 地址数据库后&#xff0c;我们可以将其存储在 MySQL 数据库中&#xff0c;并在需要查询某个 IP 对应的位置数据时&#xff0c;通过 SQL 语句获取正确的结果。这是一种很便捷的使用方式&#xff0c;并且在增加了恰当的索引后&#xff0c;可以取得不错的搜索…

java numberformat异常_Java NumberFormat格式化float类型的bug

首先&#xff0c;这个NumberFormat这个类&#xff0c;可以格式化各种数字。你只要稍微设置一下&#xff0c;结果还是很理性的。但是&#xff0c;他有那么一丢丢的bug&#xff0c;不知道你知道不&#xff1f;/*** 2.3F经过格式化&#xff0c;竟然变成2.99啦。what the fuck .* f…

7-24 树种统计 (25 分)(详解)map做法 map真香啊!

一&#xff1a;题目 7-24 树种统计 (25 分)随着卫星成像技术的应用&#xff0c;自然资源研究机构可以识别每一棵树的种类。请编写程序帮助研究人员统计每种树的数量&#xff0c;计算每种树占总数的百分比。 输入格式: 输入首先给出正整数N&#xff08;≤10 ​5 ​​ &#xf…

死磕 Redis,我有这么几招

如果你是一位后端工程师&#xff0c;面试时八成会被问到 Redis&#xff0c;特别是那些大型互联网公司&#xff0c;不仅要求面试者能简单使用 Redis&#xff0c;还要深入理解其底层实现原理&#xff0c;具备解决常见问题的能力。可以说&#xff0c;熟练使用 Redis 就是后端工程师…

回归统计在DMP中的实战应用

源宝导读&#xff1a;本文将讲解在大数据分析领域的线性回归统计计算方法&#xff0c;以及如何将非线性转化为线性回归的原理&#xff0c;同时介绍了两种的回归统计库的使用和对比&#xff0c;最后介绍线性回归在DMP产品的应用实践。一、背景回归统计&#xff0c;是数据分析常用…

龙芯3A5000初样顺利交付流片

此前&#xff0c;龙芯完成3A5000设计初样的流片交付。在3A4000架构的基础上&#xff0c;3A5000采用12纳米工艺&#xff0c;设计频率提高近40%&#xff0c;同频模式下功耗降低近60%&#xff0c;同时保持与3A4000芯片管脚兼容。龙芯3A5000和3A4000在微结构上变化不大&#xff0c;…

redhat java 多个版本_Linux下安装JDK(多个版本) 切换

1、检查系统是否自带了OpenJDK以及相关安装包&#xff0c;如果有的话则应先将其卸载。检查命令&#xff1a;java -versionrpm -qa | grep javarpm -e --nodeps tzdata-java-2013g-1.el6.noarchrpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.i686rpm -e --nodeps…

十分钟搭建自己的私有NuGet服务器-BaGet

点击上方蓝字"小黑在哪里"关注我吧搭建BaGet上传程序包在vs中使用其他前言NuGet是用于微软.NET&#xff08;包括 .NET Core&#xff09;开发平台的软件包管理器。NuGet能够令你在项目中添加、移除和更新引用的工作变得更加快捷方便。通常使用NuGet都是官方的服务&…

mysql or 创建索引_Mysql索引优化

1、单表索引优化单表索引优化分析创建表建表 SQLCREATE TABLE IF NOT EXISTS article(id INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,author_id INT(10) UNSIGNED NOT NULL,category_id INT(10) UNSIGNED NOT NULL,views INT(10) UNSIGNED NOT NULL,comments INT(1…

.Net Core HttpClient处理响应压缩

前言在上篇文章[ASP.NET Core中的响应压缩]中我们谈到了在ASP.NET Core服务端处理关于响应压缩的请求&#xff0c;服务端的主要工作就是根据Content-Encoding头信息判断采用哪种方式压缩并返回。之前在群里有人问道过&#xff0c;现在的网络带宽这么高了还有必要在服务端针对请…

mysql脚本的制作_制作脚本实现mysql自动备份

首先执行vi dbbackup.sh命令&#xff0c;在打开的编辑器输入&#xff1a;#!/bin/bash/usr/local/mysql/bin/mysqldump -uuser -ppasswd databasename > /home/wwwroot/backup/date_$(date%Y%m%d).sql这段命令的意思是&#xff1a;用mysqldump导出名为databasename的数据库到…

在 PostgreSQL 中使用码农很忙 IP 地址数据库

在下载到码农很忙 IP 地址数据库后&#xff0c;我们可以将其存储在 PostgreSQL 数据库中&#xff0c;并在需要查询某个 IP 对应的位置数据时&#xff0c;通过 SQL 语句获取正确的结果。这是一种很便捷的使用方式&#xff0c;并且在增加了恰当的索引后&#xff0c;可以取得不错的…

Java当中用 javabean和其他容器存入表格数据 或 利用 容器进行存储表格

一&#xff1a;javabean 和list容器或map容器 package cn.wyj.two;import java.util.*;/*** javabean :必须有一个无参构造函数&#xff1b;变量属性私有化&#xff1b;* 本篇还是打印一张表* author 86155**/ public class Demo13_Javabean和其他容器 {public static void ma…

7-25 朋友圈 (25 分)(详解+并查集的了解和应用)

一&#xff1a;题目 某学校有N个学生&#xff0c;形成M个俱乐部。每个俱乐部里的学生有着一定相似的兴趣爱好&#xff0c;形成一个朋友圈。一个学生可以同时属于若干个不同的俱乐部。根据“我的朋友的朋友也是我的朋友”这个推论可以得出&#xff0c;如果A和B是朋友&#xff0…

使用Azure人脸API对图片进行人脸识别

人脸识别是人工智能机器学习比较成熟的一个领域。人脸识别已经应用到了很多生产场景。比如生物认证&#xff0c;人脸考勤&#xff0c;人流监控等场景。对于很多中小功能由于技术门槛问题很难自己实现人脸识别的算法。Azure人脸API对人脸识别机器学习算法进行封装提供REST API跟…