首页 > 代码库 > 栈的压入弹出序列
栈的压入弹出序列
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。
代码:
#include <iostream> #include <stack> #include <assert.h> using namespace std; bool isStackSeq(int *pPush,int *pPop,int length){ bool isstack = false; if(pPush != NULL && pPop != NULL && length > 0){ const int *pPushNext = pPush; const int *pPopNext = pPop; stack<int> stackData; while(pPopNext - pPop < length){ //将元素入栈 while(stackData.empty() || stackData.top() != *pPopNext){ if(pPushNext - pPush == length) break; stackData.push(*pPushNext); pPushNext ++; } if(stackData.top() != *pPopNext) break; stackData.pop(); pPopNext ++; } if(stackData.empty() && pPushNext - pPush == length) isstack = true; } return isstack; } int main() { int data1[] = {1,2,3,4,5}; int data2[] = {4,5,3,2,1}; cout<< isStackSeq(data1,data2,sizeof(data1)/sizeof(int)); return 0; }
运行结果:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。