栈的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;
}
}
题目:输入两个整数序列。其中一个序列表示栈的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题第24题——判断是否是push、pop序列
- No29栈的push、pop序列(栈)
- 栈的push、pop 序列
- 第二十九题(判断pop序列是否和push序列对应)
- 栈的push,pop序列
- 一个序列是否可能是push序列的pop序列
- 29.栈的push、pop 序列
- 栈的push、pop序列
- 题目:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。
- 栈的push、pop序列
- 第29题:推断一个序列是否是还有一个push序列的pop序列
- 笔试题:判断栈的push(),pop()序列是否正确
- 一个序列是否可能是push序列的pop序列
- 100题_24 栈的push、pop序列
- 给定push序列,判断栈的pop序列
- 29、栈的push、pop序列
- 剑指Offer---面试题22:栈的push,pop序列问题
- 【算法】输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。
- 第29题:判断一个序列是否是另一个push序列的pop序列
- 栈的push、pop序列