栈的压入、弹出序列
来源:互联网 发布:信捷触摸屏编程实例 编辑:程序博客网 时间:2024/05/21 09:29
举个例子:比如:
1,2,3,4,5
4,5,3,2,1就是
而4,3,5,1,2就不是。
#include <iostream>#include <cstdlib>#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;}// ====================测试代码====================void Test(char* testName, const int* pPush, const int* pPop, int nLength, bool expected){if (testName != NULL)printf("%s begins: ", testName);if (IsPopOrder(pPush, pPop, nLength) == expected)printf("Passed.\n");elseprintf("failed.\n");}void Test1(){const int nLength = 5;int push[nLength] = { 1, 2, 3, 4, 5 };int pop[nLength] = { 4, 5, 3, 2, 1 };Test("Test1", push, pop, nLength, true);}void Test2(){const int nLength = 5;int push[nLength] = { 1, 2, 3, 4, 5 };int pop[nLength] = { 3, 5, 4, 2, 1 };Test("Test2", push, pop, nLength, true);}void Test3(){const int nLength = 5;int push[nLength] = { 1, 2, 3, 4, 5 };int pop[nLength] = { 4, 3, 5, 1, 2 };Test("Test3", push, pop, nLength, false);}void Test4(){const int nLength = 5;int push[nLength] = { 1, 2, 3, 4, 5 };int pop[nLength] = { 3, 5, 4, 1, 2 };Test("Test4", push, pop, nLength, false);}// push和pop序列只有一个数字void Test5(){const int nLength = 1;int push[nLength] = { 1 };int pop[nLength] = { 2 };Test("Test5", push, pop, nLength, false);}void Test6(){const int nLength = 1;int push[nLength] = { 1 };int pop[nLength] = { 1 };Test("Test6", push, pop, nLength, true);}void Test7(){Test("Test7", NULL, NULL, 0, false);}void main(){Test1();Test2();Test3();Test4();Test5();Test6();Test7();system("pause");}
0 0
- 1366栈的压入弹出序列
- 栈的压入、弹出序列
- 栈的压入、弹出序列
- 栈的压入、弹出序列
- Q22:栈的压入、弹出序列
- 栈的压入弹出序列
- 栈的压入、弹出序列
- 栈的压入弹出序列
- 栈的压入、弹出序列
- 栈的压入弹出序列
- 栈的压入、弹出序列
- 栈的压入、弹出序列
- 栈的压入弹出序列
- 栈的压入、弹出序列
- 栈的压入和弹出序列
- 栈的压入、弹出序列
- 栈的压入、弹出序列
- 栈的压入、弹出序列
- 怎么判断两个工程师谁的代码能力强?【改编】
- 反渗透设备:反渗透水处理设备技术特点剖析
- Singular Value Decomposition(SVD) Tutorial
- Bracket 插件
- XML转义字符
- 栈的压入、弹出序列
- 图像的熵、联合熵、互信息
- Java中存在四种引用
- 手机传感器及其在安卓iOS平台下的开发
- 12-5Java面向对象笔记(一)
- php一句话后门分析
- delphi调用java编写的http接口
- Jlink在使用的过程中的一些实用问题
- 服从广义高斯分布样本的参数估计