博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
每天一道算法题(11)——栈的push、pop 序列
阅读量:6975 次
发布时间:2019-06-27

本文共 731 字,大约阅读时间需要 2 分钟。

          题目:输入两个整数序列。其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序。为了简单起见,我们假设push 序列的任意两个整数都是不相等的。

         例如:输入的push 序列是1、2、3、4、5,那么4、5、3、2、1 就有可能是一个pop 系列

1.思路

     (1)假设栈顶元素等于输出指针指向元素,弹出栈顶元素并后移输出指针;

     (2)倘若不满足(1),则压栈输入指针元素,直到输入指针元素等于输出指针元素或者输出指针已经指向空。是前者情况,则分别省略压栈出栈操作,直接后移输入输出指针,若为后者,则返回false,因为此时栈顶不满足,所有输入序列已经压栈。

2.代码

bool decision(const char* in, const char* out){	if(!in||!out)		return false;	stack
s; s.push(*in++); while(!s.empty()){ if(s.top()==*out){ s.pop(); out++; } else{ //压栈,直到此时*in=*out或者in已经输入完毕 while(in!='\0'&&*in!=*out) s.push(*in++); if(*in=='\0')//栈顶元素不满足且in已无输入 return false; else{//*in==*out情况 in++; out++; } } } return true;}

转载于:https://www.cnblogs.com/engineerLF/p/5393037.html

你可能感兴趣的文章
说说 PWA 和微信小程序--Progressive Web App
查看>>
kill命令"-1"这个参数到底是杀进程还是reload?(转)
查看>>
struts2 result type=(chain、dispatcher、redirect、redirect-action)
查看>>
mysql foreign key(外键)
查看>>
Good Bye 2016 - C
查看>>
关于技术型人才与研究型人才
查看>>
GDB调试程序(完全手册)
查看>>
httpd: apr_sockaddr_info_get() failed for centossvn
查看>>
《Head First 统计学》读书笔记
查看>>
vim配置C++博文整理
查看>>
深入解析Windows操作系统笔记——CH1概念和术语
查看>>
来玩Play框架07 静态文件
查看>>
include和require的区别
查看>>
NuGet 无法连接到远程服务器-解决方法
查看>>
按键驱动的恩恩怨怨之概述
查看>>
第22周二
查看>>
数位dp(求1-n中数字1出现的个数)
查看>>
html传參中?和&
查看>>
AMD and CMD are dead之js模块化黑魔法
查看>>
Tesseract 3 语言数据的训练方法
查看>>