栈的push、pop序列[数据结构]
来源:互联网 发布:淘宝买了个单机版 编辑:程序博客网 时间:2024/05/05 00:26
题目:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。
比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。因为可以有如下的push和pop序列:push 1,push 2,push 3,push 4,pop,push 5,pop,pop,pop,pop,这样得到的pop序列就是4、5、3、2、1。但序列4、3、5、1、2就不可能是push序列1、2、3、4、5的pop序列。
#include<iostream>#include<stack>using namespace std;bool isPossiblePopOrder(int *push, int *pop, int length){if(push && pop && length > 0){int *pNextPush = push;int *pNextPop = pop;stack<int> stackdata;bool isPossible = false;while(pNextPop - pop < length){while(stackdata.empty() || stackdata.top() != *pNextPop){if(!pNextPush){break;}stackdata.push(*pNextPush);if(pNextPush - push < length){pNextPush++;}else{pNextPush = NULL;}}if(stackdata.top() != *pNextPop){break;}stackdata.pop();pNextPop++;}if(stackdata.empty() && pNextPop - pop == length){isPossible = true;}return isPossible;}}int main(){int push[5] = {1, 2, 3, 4, 5};int pop[5] = {4, 3, 5, 1, 2};bool result = isPossiblePopOrder(push, pop, 5);return 0;}
0 0
- 栈的push、pop序列[数据结构]
- 栈的push、pop序列
- 栈的push,pop序列
- 栈的push、pop序列
- 栈的push、pop序列
- 栈的push、pop序列
- 栈的push、pop序列
- 栈的push、pop序列
- 栈的push、pop序列
- 栈的push、pop序列
- 栈的push、pop序列
- 栈的push、pop序列
- 栈的push、pop序列
- 栈的push、pop序列
- 栈的push,pop序列
- 栈的push、pop序列
- 栈的push、pop序列
- 栈的push、pop序列
- dede栏目增加缩略图字段
- sk_buff结构详解
- MySQL sql语句大全
- 设计模式之策略(PHP实现)
- cocos2dx 将3dmax模型和动画导入游戏
- 栈的push、pop序列[数据结构]
- android蓝牙与下位机交互
- Home+Work
- XML PULL解析
- 堪称最好的A*算法
- 解决tabhost底部tab问题
- 基于系统级触发器的审计功能
- C++/C语言的标准库函数与运算符的区别new/delete malloc/free
- oracle中export出的文件在import后出现的错误