您的位置:首页 > 职场人生

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序

2013-07-23 16:36 483 查看
题目描述:

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列

poj地址为:http://ac.jobdu.com/problem.php?pid=1366

可以AC的代码:

bool isStackSequence(int *input,int *output,int len)
{
/*if(input==NULL || output==NULL)
{
throw new exception("the input is error");
}*/
stack<int> st;
while(len--)
{
st.push(*input++);
while(!st.empty() && st.top()==*output)
{
st.pop();
output++;
}
}
if(st.empty())
{
return true;
}else
{
return false;
}
}
int main(int argc, const char * argv[])
{
int n,i;
//fstream cin("input.txt");
while(cin>>n)
{
int *input=new int
;
int *output=new int
;
for(i=0;i<n;i++)
{
cin>>input[i];
}
for(i=0;i<n;i++)
{
cin>>output[i];
}
if(isStackSequence(input,output,n))
{
cout<<"Yes"<<endl;
}else
{
cout<<"No"<<endl;
}
delete []input;
delete []output;
}
//getchar();
return 0;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 面试
相关文章推荐