栈的push、pop 序列
题目:输入两个整数序列。其中一个序列表示栈的push 顺序, 判断另一个序列有没有可能是对应的pop 顺序。 为了简单起见,我们假设push 序列的任意两个整数都是不相等的。 比如输入的push 序列是1、2、3、4、5,那么4、5、3、2、1 就有可能是一个pop 系列。
#include "iostream"
#include "stack"
using namespace std;
bool IsPushSeriesCorrection(int push[],int pop[],int n)
{
int p1=0,p2 =0;
stack<int> mystack;
while (p2<n)
{
while(mystack.empty()||mystack.top() !=pop[p2])
{
if(p1<n)
{
mystack.push(push[p1++]);
}
else
return false;
}
while(!mystack.empty()&&mystack.top() ==pop[p2])
{
mystack.pop();
p2++;
}
}
return true;
}
void main()
{
int a[5] ={1,2,3,4,5};
int b[5] ={4,3,5,1,2};
if(IsPushSeriesCorrection(a,b,5))
{
cout<<"成功!"<<endl;
}
else
{
cout<<"失败!"<<endl;
}
}