- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
记记忆忆过过往往
总总有有一一个个人人需需要要这这些些知知识识。。本本博博客客信信息息正正在在迁迁往往
hhttttpp ::////wwwwww wwyyppbblloogg ccoomm//
[[置置顶顶]] 【【面面试试题题】】判判断断一一个个序序列列是是不不是是栈栈的的输输出出序序列列
分类: Algorithms Cplusplus Program 2012-08-08 21:51 38769人阅读 评论 (15) 收藏 举报
面试email
题题 目目描描述述::输输入入两两个个整整数数序序列列。。其其中中一一个个序序列列表表示示栈栈的的ppuusshh顺顺序序,,判判断断
另另一一个个序序列列有有没没有有可可能能是是对对应应的的ppoopp顺顺序序。。为为了了简简单单起起见见,,我我们们假假设设ppuusshh
序序列列的的任任意意两两个个整整数数都都是是不不相相等等的的。。比比如如输输入入的的ppuusshh序序列列是是
11、、22、、33、、44、、55、、66、、77,,那那么么22、、11、、44、、33、、77、、66、、55就就有有可可能能是是一一个个ppoopp系系
列列。。但但序序列列44、、33、、55、、11、、22、、77、、66就就不不可可能能是是ppuusshh序序列列11、、22、、33、、44、、55的的
ppoopp序序列列。。
问题分析:解决这个问题我们可以申请一个栈,然后从输入序列开头一个一个判断是否等于输出序
列的头。举个简单的例子。比如输入序列为1、2、3、4输出序列为3、4、2、1,这是输出序列第一
个数字为3,我们就从输入序列开始寻找3,直到找到3,而假如3之前有数据我们就把它们存入栈
中,在输入序列中,开始碰到的是1元素,和输出序列的第一个元素不相等,我们就把1放入栈中,
然后就是2元素,也不想等,也放入栈中,然后就是3,这时候和输出序列的第一个元素相等,我们
就把输出序列的下标移到2,而输入序列的下标移到3,这时候输出序列的元素为4,先个栈顶元素
比较,发现不相等,这时候元素要么在输入序列的后面,要么就没有,我们在输入序列里面寻找,
此时的出入序列指到元素4正好和输出序列的元素相等,于是我们把输出序列和输入序列的下标都
加上1,此时输入序列已经弄完了,而输出序列指着2,我们也先和栈顶元素比较,发现它们相等,
于是我们把栈顶元素删除,同时输出序列的下标加1,这时候输出序列直到元素1,我们再和栈顶元
素比较,发现它们相等,于是我们把栈顶元素删除,同时输出序列的下标加1。这时候我们发现栈
为空,而且输入序列的下标已经直到输入序列的末尾,这说明输出序列是栈的输出序列,我们返回
true,否则我们返回false;代码实现如下所示:
#include iostream
/*
* author: w397090770
* Email:wyphao.2007 163.com
* 仅用于学习交流之用
**/
#include vector
#include stack
using namespace std;
bool IsPopOrder(const vectorint Push, const vectorint Pop){
if(Push.size() != Pop.size()){
return false;
}
stackinttemp;
int tempIndex = 0;
int tempIndex2 = 0;
int Size = Pop.size();
while(tempIndex2 Size){
for(; tempIndex Size; tempIndex++){
if(Push[tempIndex] == Pop[tempIndex2]){
tempIndex2++;
tempIndex++;
break;
您可能关注的文档
- (图解版)SQL Server数据库备份与还原.pdf
- [ACM]在命令行以LED样式显示输入的数字.pdf
- [混迹IT职场系列]一、转正的那些事儿.pdf
- [开心学php100天]第六天-用php玩转页面(基础篇).pdf
- [原创]postgreSQL9.1.2总控walsender.c源码分析.pdf
- [转]Java多线程--让主线程等待所有子线程执行完毕.pdf
- “JAX-WS版本不一致导致Webservice异常”与《共享达成共赢》.pdf
- 《操作系统实现之路》前言及内容提要.pdf
- 《操作系统实现之路》源代码下载路径及求助途径.pdf
- 《程序猿的搬砖生活》八、学生时代最后的“疯狂”.pdf
- 【牛腩新闻发布系统】之CSS总结.pdf
- 【设计模式】单例设计模式的N中Java实现方法.pdf
- 【慎思堂】之JQuery实战总结.pdf
- 1.《程序猿扯淡系列》遗失的美好--假期君再见了.pdf
- 4.《程序猿扯淡系列》宅男的烦恼--假期修行攻略.pdf
- 5.《程序猿扯淡系列》吃货的理想--健康从吃开始.pdf
- 6《程序猿扯淡系列》时间的飞逝--记忆中的点滴.pdf
- 12-13年学习总结——路上的风景很美.pdf
- 64. XPages自定义控件(三)高级搜索之二.pdf
- 64位Win7中导入excel提示“因为 OLE DB 访问接口 'MICROSOFT.JET.OLEDB.4.0' 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询。”.pdf
文档评论(0)