判断元素出栈入栈顺序的合法性
来源:互联网 发布:rfid读写器java源代码 编辑:程序博客网 时间:2024/06/06 07:16
思路:假设入栈序列{1,2,3,4,5},出栈序列{4,5,3,2,1};首先我们将入栈序列的第一个元素入栈,这是设置一个指针只想出栈序列的第一个元素,如果出入栈以后,栈顶
元素和出栈指针所指向的元素相等,那么就让栈顶元素出栈,让指针++,最后判断栈为空就好,若为空,就说明是合法的,如果不是就是不合法。
代码如下:
#include<iostream>#include<assert.h>#include<stack>using namespace std;
bool IsLegal(int* stackin,int* stackout,int lenin,int lenout){assert(stackin&&stackout);//判断入栈、出栈序列不为空if(lenin!=lenout)//入栈长度不等于出栈长度,不合法{return false;}stack<int> l1;int i=0;int j=0;for(;i<lenin;++i){l1.push(stackin[i]);//将元素一一入栈while(l1.size()>0&&l1.top()==stackout[j])//保证栈里的元素不为空,并且每次栈顶均要和出栈序列一一匹配{l1.pop();++j;}}if(l1.size()==0)return true;elsereturn false;}void TestStack(){int stackin[]={1,2,3,4,5};//int stackout[]={4,5,3,2,1};int stackout[]={1,5,3,2,4};int lenin=sizeof(stackin);int lenout=sizeof(stackout);int A=IsLegal(stackin,stackout,lenin,lenout);if(A){cout<<"出栈顺序合法"<<endl;}else{cout<<"出战顺序不合法"<<endl;}}int main(){TestStack();return 0;}
阅读全文
0 0
- 判断元素出栈入栈顺序的合法性
- 面试题(判断元素出栈入栈顺序的合法性。)
- 元素出入栈的顺序合法性判断
- 判断元素出栈,入栈顺序的合法性
- 判断元素入栈,出栈顺序的合法性
- 判断元素出栈、入栈顺序的合法性
- 判断元素出栈,入栈顺序的合法性
- 判断元素出栈、入栈顺序的合法性
- 判断元素入栈出栈的合法性
- 判断元素入栈出栈的合法性
- 给出入栈顺序,判断元素出栈顺序的合法性
- 【C++】判断顺序栈出栈顺序的合法性
- 元素出栈入栈的合法性
- 剑指offer 22---判断元素出栈、 入栈顺序的合法性
- 判断元素出栈、入栈顺序的合法性【每日一题】
- 【数据结构】判断出栈顺序的合法性
- 栈和队列的面试题(五)---判断元素出栈、入栈顺序的合法性
- 元素的出栈、入栈顺序的合法性。
- 为什么要用PolyFill(JS中的修补匠)
- XUtils3.0数据库的一些操作
- easyui datetimebox修改默认显示格式
- 【补充】为什么初始化SDRAM中 adrl r2, mem_cfg_val而不是 ldr r2,=mem_cfg_val
- redis的集群-redis系列教程
- 判断元素出栈入栈顺序的合法性
- 坑爹的IE6兼容性问题
- 北京大学可视化暑期学校Day1总结
- 安卓之单点和多点触摸(画圆)
- 成长双系统
- ROS学习笔记(六):多节点通信
- JAVA 创建TXT文件,写入文件内容,读取文件内容
- 编写干净的代码
- android网络请求HttpURLConnection详解