题目:
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。
分析:
这是一个模拟实现题,没有难度。总结一下就是,如果栈顶元素和此时要对比的数组中的数一样就弹出栈,如果不一样就压栈。
下面是代码:
bool IsPopOrder(int *pPush,int *pPop,int length)
{
stack<int>stack ;
if(pPush == NULL || pPop == NULL || length < 0)
return false;
int *pIn = pPush;
int *pOut = pPop;
while(pOut < pPop + length)
{
int value;
///这里取了-1也可以取其他数,来表示一个没有数,和其他数分开
if(stack.empty())
value = -1;
else
value = stack.top();
if(*pOut == value)
{
stack.pop();
pOut++;
}
else
{
stack.push(*pIn);
if(*pIn == '\0')
return false;
pIn++;
}
}
return true;
}