题目:根据入栈顺序判断出栈顺序是否合法;
例如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。入栈的序列(1,2,3,4,5),出栈序列为(4,5,2,3,1),则不合法。
图示理解:
代码:
bool CheckTheStackOutputIsLow(int in[],int out[],int in_len,int out_len)
{
assert(in);
assert(out);
if(in_len != out_len)
{
return false;
}
stack<int> stack1;
int* input = in;
int*output = out;
while(input != in+in_len)
{
if(*input == *output)
{
input++;
output++;
}
else
{
stack1.push(*input);
input++;
}
}
while(output != out+out_len && !stack1.empty())
{
if(*output == stack1.top())
{
output++;
stack1.pop();
}
else
return false;
}
if(input == in+in_len && output == out+out_len && stack1.empty())
return true;
else
return false;
return true;
}
运行结果:
作者水平有限,若有问题,请留言,谢谢!!!