每日一算法(已知进栈序列 判断出栈序列是否合法)
2012-05-29 00:44
281 查看
#include<iostream>
using namespace std;
bool ifpossible(int*,int*,int);
void main()
{
int lhs[]={1,2,3,4,5};
int rhs[]={4,3,2,1,5};
cout<<ifpossible(lhs,rhs,5)<<endl;
}
bool ifpossible(int *in,int *out,int len)
{
int num=0;
int *stack=new int[len];
int *end=in+len;
for(int i=0;i<len;i++)
{
if(num!=0&&*(stack+num-1)==*out)
{
--num;
cout<<"no top"<<endl;
}
else
{
if(in==end)
return false;
while(in!=end&&*in!=*out)
{
if(in==end)
return false;
else
{
*(stack+num)=*in;
in++;
num++;
}
}
if(in!=end)
{
in++;
}
}
out++;
}
return true;
}
写完 没怎么全面测试,各位网友可以试试看看那里可以改进?或者有bug?不断学习中
using namespace std;
bool ifpossible(int*,int*,int);
void main()
{
int lhs[]={1,2,3,4,5};
int rhs[]={4,3,2,1,5};
cout<<ifpossible(lhs,rhs,5)<<endl;
}
bool ifpossible(int *in,int *out,int len)
{
int num=0;
int *stack=new int[len];
int *end=in+len;
for(int i=0;i<len;i++)
{
if(num!=0&&*(stack+num-1)==*out)
{
--num;
cout<<"no top"<<endl;
}
else
{
if(in==end)
return false;
while(in!=end&&*in!=*out)
{
if(in==end)
return false;
else
{
*(stack+num)=*in;
in++;
num++;
}
}
if(in!=end)
{
in++;
}
}
out++;
}
return true;
}
写完 没怎么全面测试,各位网友可以试试看看那里可以改进?或者有bug?不断学习中
相关文章推荐
- 已知入栈顺序,判断某一序列是否为其合法出栈序列!
- 剑指offer-给出一个入栈序列和一个出栈序列,判断出栈序列是否合法。
- 每日一题(35) - 栈的压入、弹出序列(验证出栈序列是否合法)
- 判断出栈序列是否合法
- 判断出栈序列是否合法
- POJ 1363 Rails 判断出栈序列是否合法
- POJ 1363 Rails 判断出栈序列是否合法
- 栈——判断栈的入出栈序列是否合法
- 判断出栈序列是否合法
- 给定入栈序列判断给定出栈序列是否合法
- 根据进栈序列判断出栈序列是否合法
- 给定入栈序列,判断出栈序列是否合法
- POJ 1363 Rails 判断出栈序列是否合法
- 图结构练习——判断给定图是否存在合法拓扑序列(dfs算法(第一个代码),邻接矩阵(前两个代码),邻接表(第三个代码))
- 给定入栈序列,判断出栈序列是否合法
- 栈--判断出栈序列是否合法
- UVA 514 栈判断出栈序列是否合法
- 判断序列是否为合法出栈
- 判断出栈序列是否合法
- java 已知进栈序列,判断出栈序列是否正确