Z栈的压入,弹出序列

来源:互联网 发布:网络整合营销推广方案 编辑:程序博客网 时间:2024/05/23 20:12
#include<stack>using namespace std;bool IsPopOrder(const int* pPush,const int* pPop,int nLength){bool bPossible=false;if(pPush!=NULL&&pPop!=NULL&&nLength>0){const int* pNextPush=pPush;const int* pNextPop=pPop;stack<int> stackData;while(pNextPop-pPop<nLength){while(stackData.empty()||stackData.top()!=*pNextPop){if(pNextPush-pPush==nLength)break;stackData.push(*pNextPush);pNextPush++;}if(stackData.top()!=*pNextPop)break;stackData.pop();pNextPop++;}if(stackData.empty()&&pNextPop-pPop==nLength)bPossible=true;}return bPossible;}
<pre name="code" class="cpp">#include<iostream>#include"IsPopOrder.h"using namespace std;int main(){int pPush[]={1,2,3,4,5};int pPop1[]={4,5,3,2,1};int pPop2[]={4,3,5,1,2};cout<<IsPopOrder(pPush,pPop1,5)<<endl;cout<<IsPopOrder(pPush,pPop2,5)<<endl;}


0 0