本文主要是介绍剑指Offer22栈的压入、弹出序列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。
分析:
这是一个模拟实现题,没有难度。总结一下就是,如果栈顶元素和此时要对比的数组中的数一样就弹出栈,如果不一样就压栈。
下面是代码:
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;
}
这篇关于剑指Offer22栈的压入、弹出序列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!