#include <iostream>
#include <stack>
using namespace std;
bool IsPopOrder(const int* push,const int* pop,int length)
{
bool bPossible=false;
if(push!=NULL && pop!=NULL && length>0)
{
stack<int> stackData;
int i=0;
int j=0;
while(j<length)
{
while(stackData.empty() || stackData.top()!=pop[j])
{
if(i>length-1)
break;
stackData.push(push[i]);
++i;
}
if(stackData.top()!=pop[j])
break;
stackData.pop();
++j;
}
if(stackData.empty() && j==length)
bPossible=true;
}
return bPossible;
}
int main()
{
int A[]={1,2,3,4,5};
int B[]={4,5,3,2,1};
int length=sizeof(A)/sizeof(A[0]);
if(IsPopOrder(A,B,length))
cout << "是出栈序列"<< endl;
return 0;
}
剑指offer--面试题31:栈的压入弹出序列
最新推荐文章于 2020-04-23 20:04:04 发布