题目22:栈的压入、弹出序列
2016-09-19 15:27
218 查看
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否是该栈的弹出序列。
假设压入栈的所有数字均不相等。例如:入栈 1、2、3、4、5。 序列4、5、3、2、1是该栈弹出序列。
但是4、3、5、1、2就不可能是该压栈序列的弹出序列。
假设压入栈的所有数字均不相等。例如:入栈 1、2、3、4、5。 序列4、5、3、2、1是该栈弹出序列。
但是4、3、5、1、2就不可能是该压栈序列的弹出序列。
#include<iostream> #include<stack> using namespace std; bool IsRightOrder(int *psh, int * pp,int length)//ppsh入栈序列 、pp出栈序列、序列长度 { bool flag=false; if(psh!=NULL&&pp!=NULL&&length>0) { stack<int> inStack;//定义一个栈 int *nextPsh=psh; //定义两个指向序列的指针 。 入栈 int *nextPp=pp; //出栈指针 while(nextPp-pp<length)//控制指针 nextPp 不超过pp序列的长度 { while(inStack.empty()||inStack.top()!=*nextPp)//当inStack.top()==*nextPp 时循环结束 { if(nextPsh-psh==length)//全部入栈 没找到 break; inStack.push(*nextPsh);//入栈 nextPsh++; } if(inStack.top()!=*nextPp) break; inStack.pop();//栈顶退栈 nextPp++; } if(inStack.empty()&&nextPp-pp==length) flag=true; } return flag; }
相关文章推荐
- 剑指offer 22题 【举例让抽象具体化】栈的压入、弹出序列
- 剑指offer-22:栈的压入弹出序列
- 栈的压入、弹出序列(面试题 22)
- 剑指Offer:面试题22 栈的压入、弹出序列
- (剑指Offer)面试题22:栈的压入、弹出序列
- [剑指offer]面试题22:栈的压入、弹出序列
- 题目1366:栈的压入、弹出序列
- 面试题22:栈的压入、弹出序列
- 栈的压入、弹出序列——22
- 剑指Offer-面试题22 栈的压入、弹出序列(python实现)
- 剑指offer-题22:栈的压入、弹出序列
- 举例让抽象具体化-面试题22-栈的压入、弹出序列
- 剑指offer-面试题22:栈的压入、弹出序列
- 九度_题目1366:栈的压入、弹出序列
- 剑指offer22 栈的压入、弹出序列
- 剑指offer面试题22:栈的压入、弹出序列
- 九度OJ-题目1366:栈的压入、弹出序列
- 22 栈的压入、弹出序列
- 剑指offer——面试题22:栈的压入和弹出序列
- 剑指offer 22 栈的压入、弹出序列