您的位置:首页 > 运维架构

栈的push、pop 序列

2014-09-10 23:52 232 查看
 栈的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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  微软100题