a为压栈序列,b为出栈序列
bool check(int *a,int *b,int n)
{
stack<int> int_stack;
bool isTrue = false;
int * start = a;
int top = 0;
if(a!=NULL && b!=NULL && n>0)
{
for(int i=0;i<n;i++)
{
if(int_stack.size()!=0) top = int_stack.top();
if(int_stack.size()==0 || int_stack.top()!= b[i])
{
while((*start)!=b[i])
{
if(start-a==n) break;
int_stack.push((*start));
start++;
}
if(start-a ==n) break;
else start++;
}
else
{
int_stack.pop();
}
}
if(int_stack.size()==0)isTrue=true;
}
return isTrue;
}