博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
栈的压入弹出序列
阅读量:5221 次
发布时间:2019-06-14

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

  1. 输入两个整数序列,第一个表示压入顺序,判断第二个是否是该栈的弹出顺序。
  2. 选择题

1、思路:

  对弹出序列的元素依次分析,如果下一个弹出的数字刚好是栈顶数字,那么直接弹出。如果下一个弹出的数字不在栈顶,我们把压栈序列中还没有入栈的数字压入辅助栈,直到把下一个需要弹出的数字压入栈顶为止。如果所有的数字都压入栈了仍然没有找到下一个弹出的数字,那么该序列不可能是一个弹出序列。

IsOrder
1 #include 
2 #include
3 #include
4 5 using namespace std; 6 7 bool IsOrder(const int* push, const int* pop, int length) 8 { 9 assert(push != NULL && pop != NULL && length > 0);10 stack
stackData;11 int i = 0, j = 0;12 13 for (; i < length; i++)14 {15 while (stackData.empty() || stackData.top() != pop[i])16 {17 if (j == length)18 return false;19 stackData.push(push[j]);20 j++;21 }22 stackData.pop();23 }24 return true;25 }26 27 int main()28 {29 int push[1] = {
1};30 int pop[1] = {
1};31 bool result = IsOrder(push, pop, 1);32 printf("%d\n", result);33 }34

 

转载于:https://www.cnblogs.com/wangpengjie/archive/2013/04/08/3009053.html

你可能感兴趣的文章
类别的三个作用
查看>>
【SICP练习】85 练习2.57
查看>>
runC爆严重安全漏洞,主机可被攻击!使用容器的快打补丁
查看>>
Maximum Product Subarray
查看>>
solr相关配置翻译
查看>>
通过beego快速创建一个Restful风格API项目及API文档自动化(转)
查看>>
解决DataSnap支持的Tcp长连接数受限的两种方法
查看>>
Synchronous/Asynchronous:任务的同步异步,以及asynchronous callback异步回调
查看>>
ASP.NET MVC5 高级编程-学习日记-第二章 控制器
查看>>
Hibernate中inverse="true"的理解
查看>>
高级滤波
查看>>
使用arcpy添加grb2数据到镶嵌数据集中
查看>>
[转载] MySQL的四种事务隔离级别
查看>>
QT文件读写
查看>>
C语言小项目-火车票订票系统
查看>>
15.210控制台故障分析(解决问题的思路)
查看>>
BS调用本地应用程序的步骤
查看>>
常用到的多种锁(随时可能修改)
查看>>
用UL标签+CSS实现的柱状图
查看>>
mfc Edit控件属性
查看>>