判断元素入栈/出栈的合法性
2016-07-06 14:05
369 查看
判断元素入栈 出栈的合法性:
验证进栈出栈的合法性---每次取栈顶元素,因为出栈的时候先进后出,每次出栈的总是栈顶元素,栈顶元素和另一个数组进行对比,如果相等就pop
验证进栈出栈的合法性---每次取栈顶元素,因为出栈的时候先进后出,每次出栈的总是栈顶元素,栈顶元素和另一个数组进行对比,如果相等就pop
//判断元素入栈 出栈的合法性 //验证进栈出栈的合法性---每次取栈顶元素,因为出栈的时候先进后出,每次出栈的 //总是栈顶元素,栈顶元素和另一个数组进行对比,如果相等就pop #include<stack> #include<assert.h> template<class T> bool CheckStack(const T *sPush, const T *sPop, size_t sizein, size_t sizeout) { assert(sPush && sPop); assert(sizein && sizeout); if (sizein != sizeout)//如果两个大小都不同,肯定是错的 return false; stack<T> s; int i = 0; int j = 0; for (i = 0; i < sizein; i++) { s.push(sPush[i]);//一个一个的进行入栈 while (j<sizeout) { //如果s.top()元素和sPop[j]相等,那么就pop,sPop指向下一个元素 if (!s.empty() && s.top() == sPop[j]) { s.pop(); j++; } else { break; } } } if (!s.empty()) { return false; } else return true; } void TestCheckStack() { int a[] = { 1, 2, 3, 4, 5 }; int b[] = { 4, 5, 3, 2, 1 }; size_t sizein = sizeof(a) / sizeof(a[0]); size_t sizeout = sizeof(a) / sizeof(a[0]); cout << CheckStack(a, b, sizein, sizeout) << endl; }
相关文章推荐
- angularjs踩过的那些坑
- spring @Qualifier 注解
- usage of map
- Android 圆角图片控件
- Apache与Nginx优缺点比较
- Android Low memory killer
- 欢迎使用CSDN-markdown编辑器
- Linux C OSS音频编程
- Linux C OSS音频编程
- Linux C OSS音频编程
- 地图篇之百度地图各种自定义需求
- ajax省市县三级联动
- intentservice源码分析
- tomcat启动不了报错: Publishing failed Could not publish to the server. java.lang.IndexOutOfBoundsException
- android Handler 用法
- winpcap环境搭建Visual Studio 2010
- windows系统中ubuntu虚拟机安装及web项目到服务上(三)
- js 获取根目录 获取参数
- Git
- 如何解决源和目标库SCN同步问题