1、题目
2、
3、参考代码
//栈的压入,弹出序列,判断一个序列是否是栈的弹出序列
bool IsPopOrder(int* push, int* pop, int length)
{
bool flag=false;
if(push!=NULL && pop!=NULL && length>0)
{
int* pNextPush=push;
int* pNextPop=pop;
std::stack<int> m_stack;
while(pNextPop-pop<length)
{
while(m_stack.empty() || m_stack.top() != *pNextPop)
{
if(pNextPush-push == length)
break;
m_stack.push(*pNextPush);
pNextPush++:
}
if(m_stack.top()!=*pNextPop)
break;
m_stack.pop();
pNextPop++:
}
if(m_stack.empty() && pNextPop-pop == length)
flag=true;
}
return flag;
}