c++实现对出栈合法性的检测
来源:互联网 发布:ticwatch软件下载 编辑:程序博客网 时间:2024/04/29 22:52
//Designed by st//检查出栈的合法性 #include <iostream>#include <assert.h>#include <stack>using namespace std;bool _isLegal(int* _pushStack, int* _popStack, int len){ if (_pushStack == NULL || _popStack == NULL || len <= 0) { exit(EXIT_FAILURE); } bool ret = false; stack<int> s;//辅助栈 if (_pushStack != NULL && _popStack != NULL && len > 0) { int* _inPtr = _pushStack; int* _outPtr = _popStack; while (_outPtr - _popStack < len)//遍历整个出栈序列 { while (s.empty() || s.top() != *_outPtr)//遍历入栈序列, { if (_inPtr - _outPtr == len) { break; } s.push(*_inPtr); _inPtr++; } if (s.top() != *_outPtr) { break; } s.pop();//当*_inPtr == *_outPtr 时表示此时执行的是出栈操作,所以讲辅助栈的栈顶元素pop出去 _outPtr++; } if (s.empty() && _outPtr - _popStack == len)//保证出栈的指针已经全部都遍历了一遍 { ret = true; } } return ret;}int main(){ int _pushStack[] = { 1, 2, 3, 4, 5 }; int _popStack[] = { 3,2,1,4,5 }; int len = sizeof(_pushStack )/ sizeof(_pushStack[0]); bool ret = _isLegal(_pushStack, _popStack, len); cout << ret << endl; getchar(); return 0;}
0 0
- c++实现对出栈合法性的检测
- 出栈的合法性检测
- 出栈的合法性
- 元素入栈、出栈的合法性检测
- 对email合法性的检测
- 出栈序列的合法性
- 【数据结构】检查元素出栈的合法性
- 【数据结构】 出栈序列的合法性【面试】
- 【数据结构】判断出栈顺序的合法性
- 出栈顺序合法性
- 出栈合法性
- C语言实现IP地址合法性检测和子网匹配
- 判断出栈顺序合法性
- 判断元素出栈合法性
- 元素的出栈、入栈顺序的合法性。
- 栈--元素出栈、入栈顺序的合法性问题
- 元素出栈、入栈顺序的合法性
- 判断元素入栈/出栈的合法性
- 缓存淘汰算法--LRU算法
- 【leetcode】292. Nim Game
- hello world
- iOS 9的一些改动
- Gazebo与ros_control(3):Moveit输出规划轨迹到Gazebo
- c++实现对出栈合法性的检测
- Microsoft.Ace.OleDb.12.0 操作excel
- HDOJ4507 恨7不成妻
- 数据采集及预处理
- cocos2d-x tolua++ 类型转换
- Masonry介绍与使用实践:快速上手Autolayout(简单实例,看完即会)
- 第11周项目1—点—圆—圆柱类族的设计 (1)
- base64 加密方法
- Android 应用私密性防护