数据结构:(三)栈
来源:互联网 发布:神枪手交易软件 编辑:程序博客网 时间:2024/06/06 20:28
(一)
(二)栈的操作
(1)输入两个整数序列,第一个序列表示栈的压入顺序,判断第二个序列是否为该栈的弹出顺序。
思路:用一个辅助栈,把压入序列的数字依次压入辅助栈,直到遇到出栈序列的第一个数字;弹出栈顶数字,如果此时栈顶元素等于出站序列的下一个数字则继续弹出,如果不相等则把压入序列中还没有入栈的数字压入辅助栈,直到遇到弹出序列的下一个数字......重复,如果所有数字都压入栈了,仍然没有找到弹出序列的下一个数字,那么序列不可能是一个弹出序列。
bool IsPopOrder(vector<int> pushV,vector<int> popV) { bool isPossible=false; if(pushV.size()<=0||popV.size()<=0||pushV.size()!=popV.size()) return isPossible; stack<int> stackData; int nextPop=0; int nextPush=0; while(nextPop<popV.size()) { while(stackData.empty()||stackData.top()!=popV[nextPop]) {//如果栈为空或者栈顶数字不等于输出序列的当前数字则把压入序列中未入栈的数字入栈 if(nextPush==pushV.size())//不是pushV.size()-1因为最后一个数字入栈后,nextPush也加了1 break; stackData.push(pushV[nextPush]); nextPush++; } if(stackData.top()!=popV[nextPop]) break; stackData.pop(); nextPop++; } if(stackData.empty()&&nextPop==popV.size())//不是popV.size()-1,因为最后一个数字比较后nextPop也进行了加1; isPossible=true; return isPossible; }
0 0
- 数据结构:(三)栈
- 数据结构之栈(三)
- 郝斌数据结构(三):动态栈
- 数据结构之栈和队列(三)
- 数据结构小结 (三)栈与队列
- 数据结构(三) 栈和队列
- 数据结构学习 栈与队列(三)
- 数据结构:栈的顺序存储(三)
- 数据结构与算法(三)栈&&队列
- javascript数据结构系列(三)-栈
- Java与数据结构(三) 栈
- 数据结构学习三 栈
- 【数据结构 三】---栈
- 【数据结构 三】---栈
- 数据结构(三)
- (三)CvSeq数据结构
- 数据结构复习题(三)
- 数据结构(三):图
- perl网络爬虫--举例(登录论坛eetop)
- HTML5+Canvas贪吃蛇
- python3 python3:(unicode error) 'utf-8' codec can't decode
- Leetcode 409. Longest Palindrome 构造最长回文串 解题报告
- 决策树ID3代码(Python)
- 数据结构:(三)栈
- 级联分类器概述
- linux C++ 获取当前日期时间
- Filter——使用篇
- jsp js正则表达式用法
- springmvc常用注解标签详解
- LeetCode 332. Reconstruct Itinerary【medium】
- Python——calendar模块
- 数据段、代码段、堆栈段、BSS段的区别