何海涛面试题22
#include<iostream>
#include<stack>
using namespace std;
bool IsPopOrder(int a[],int b[],int n)//压入序列和弹出序列及长度
{
bool flag=false;
if(n>0)
{
int i=0,j=0;
stack<int>s;
while(j<n)
{
while(s.empty()||s.top()!=b[j])//压入a[5]={1,2,3,4,5}直到元素等于b[0],b[5]={4,5,3,2,1}(正确)和{4,3,5,2,1}(错误)
{
if(i==n)break;//没找到
s.push(a[i]);
i++;
}
if(s.top()!=b[j])//下一个出栈的元素不等于栈顶元素
{
break;
}
s.pop();//出栈
j++;
}
if(s.empty()&&j==n)
flag=true;
}
return flag;
}