面试题22:栈的压入、弹出序列
2016-12-21 12:18
162 查看
思路:如果下一个弹出的数字刚好是栈顶数字,则直接弹出。若下一个弹出的数字不在栈顶,则把压栈序列中还没有入栈的数字压入辅助栈,直到把下一个需要弹出的数字压入栈顶为止。若所有的数字都压入栈了仍没有找到下一个弹出的数字,则表明该序列不可能滴一个弹出序列。
#include <stdio.h> #include <iostream> #include <stack> using namespace std; bool IsPopOrder(int *nPush, int *nPop, int length) { if(nPush == NULL || nPop == NULL || length < 0) return false; stack<int> s; int PushNum = 1; int PopNum =0; s.push(nPush[0]); while(PopNum < length ) { while (s.top() != nPop[PopNum] && PushNum < length ) { s.push(nPush[PushNum]); PushNum++; } if(s.top() == nPop[PopNum]) { PopNum++; s.pop(); } else { return false; } } return true; } int main() { int nPush[5] = {1,2,3,4,5}; int nPop[5] = {4,5,3,2,1}; int nPop1[5] = {4,5,2,3,1}; bool result; // result = IsPopOrder(nPush, nPop, 5); result = IsPopOrder(nPush, nPop1, 5); cout<<result<<endl; }
相关文章推荐
- 剑指offer面试题 22 栈的压入、弹出序列的匹配
- 面试题22:栈的压入、弹出序列
- 【剑指Offer】面试题22:栈的压入,弹出序列
- 面试题22:栈的压入、弹出序列
- [剑指offer]面试题22:栈的压入、弹出序列
- 剑指Offer-面试题22 栈的压入、弹出序列(python实现)
- 举例让抽象具体化-面试题22-栈的压入、弹出序列
- 剑指offer 面试题22:栈的压入、弹出序列 题解
- 【剑指offer】4.3举例让抽象问题具体化——面试题22:栈的压入、弹出序列
- 剑指Offer_面试题22_栈的压入弹出序列
- 剑指offer——面试题22:栈的压入和弹出序列
- 《剑指Offer》面试题22:栈的压入,弹出序列
- 剑指offer--面试题22:栈的压入、弹出序列
- 面试题22:栈的压入弹出序列
- 面试题 22: 栈的压入,弹出序列
- 剑指offer——面试题22:栈的压入、弹出序列
- 剑指offer-4-面试题22:栈的压入、弹出序列
- 面试题22 栈的压入弹出序列
- 剑指offer 面试题22 栈的压入弹出序列
- 剑指offer面试题22 栈的压入、弹出序列