剑指offer 22---判断元素出栈、 入栈顺序的合法性
来源:互联网 发布:linux qt调试器未设置 编辑:程序博客网 时间:2024/06/05 14:33
题目:
判断元素出栈、 入栈顺序的合法性。 如: 入栈的序列(1,2,3,4,5) , 出栈序列为(4,5,3,2,1) 是合法序列, 入栈的序列(1,2,3,4,5) , 出栈序列为(1,5,3,2,4) 是不合法序列。
代码实现如下:
#include <iostream>#include <assert.h>#include <stack>#include <Windows.h>using namespace std;//判断合法性bool IsLegal(int* stackin, int* stackout, int lenin, int lenout) //入栈序列,出栈序列,入栈长度,出栈长度{assert(stackin && stackout); //先判断出栈序列,入栈序列不为空if (lenin != lenout) //出栈长度和入栈长度不相等,不合法{return false;}stack<int> qq;int i = 0;int j = 0;for (; i < lenin; ++i){qq.push(stackin[i]); //先将元素一 一入栈while (qq.size() > 0 && qq.top() == stackout[j]) //上述代码在入栈,所以元素个数一定大于0,并且每次栈顶均要和出栈序列一一匹配,否则不合法{qq.pop();++j;}}return (qq.size() == 0) ? true : false; //程序运行到此处时,栈中应该为空,否则不合法}
测试题目中第一个序列:
#include "Stack.h"void TestStack(){int stackin[] = { 1, 2, 3, 4, 5 }; //入栈序列int stackout[] = { 4, 5, 3, 2, 1 }; //出栈序列int lenin = sizeof(stackin) / sizeof(stackin[0]);int lenout = sizeof(stackout) / sizeof(stackout[0]);int www = IsLegal(stackin, stackout, lenin, lenout);if (www){cout << "出栈序列合法" << endl;}else{cout << "出栈序列不合法" << endl;}}int main(){TestStack();system("pause");return 0;}
测试第二个序列:
#include "Stack.h"void TestStack(){int stackin[] = { 1, 2, 3, 4, 5 }; //入栈序列int stackout[] = { 1, 5, 3, 2, 4 }; //出栈序列int lenin = sizeof(stackin) / sizeof(stackin[0]);int lenout = sizeof(stackout) / sizeof(stackout[0]);int www = IsLegal(stackin, stackout, lenin, lenout);if (www){cout << "出栈序列合法" << endl;}else{cout << "出栈序列不合法" << endl;}}int main(){TestStack();system("pause");return 0;}
2 0
- 剑指offer 22---判断元素出栈、 入栈顺序的合法性
- 判断元素出栈,入栈顺序的合法性
- 判断元素入栈,出栈顺序的合法性
- 判断元素出栈、入栈顺序的合法性
- 判断元素出栈,入栈顺序的合法性
- 判断元素出栈、入栈顺序的合法性
- 给出入栈顺序,判断元素出栈顺序的合法性
- 元素的出栈、入栈顺序的合法性。
- 判断元素出栈、入栈顺序的合法性【每日一题】
- 栈--元素出栈、入栈顺序的合法性问题
- 元素出栈、入栈顺序的合法性
- 元素出栈、入栈顺序的合法性
- ~元素出栈、入栈顺序的合法性~
- 元素出栈、入栈顺序的合法性。
- 元素出栈、入栈顺序的合法性
- 元素出栈、入栈顺序的合法性。
- 元素出栈、入栈顺序的合法性
- 元素出栈、入栈顺序的合法性
- LinkedIn是如何优化Kafka的
- Android 笔记
- 浅谈jsp、freemarker、velocity区别
- zookeeper<集群环境搭建>
- Java守护线程简介
- 剑指offer 22---判断元素出栈、 入栈顺序的合法性
- 进程间通信-匿名管道
- Java transient关键字解析
- IntelliJ远程调试教程
- Linux远程执行hostname命令,监控服务器是否被篡改
- WebService教程详解
- Hadoop和Spark的处理模型比较
- docker build命令详解
- mac 下安装php7全过程