给出入栈顺序,判断元素出栈顺序的合法性
来源:互联网 发布:阿里技术大牛 知乎 编辑:程序博客网 时间:2024/06/07 02:18
【思路】
给出入栈顺序,判断出栈顺序的合法性。
大致算法如下:
以入栈顺序 1 2 3 4 5,出栈顺序2 1 3 5 4 为例
1.先判断p1 p2不相等,1入栈,p1++然后p1和p2相等,p1++,p2++;
2.判断栈顶元素1和p2相等,则出栈且p2++;
3.p1的值和p2相等,都为三,则p1++,p2++;
4.s为空,p2->5和p1->4不相等,则4入栈,p1++;
5.此时p1->5,p2->5,s->4,p1==p2,则p2++到4,p1到头,则将s栈里的元素拿出与p2比较,相等,出栈。
6.p2到了结尾,p1也到了结尾,s栈为空,则这个序列是正确的。
【代码如下】
bool Judge(int *p1,int *p2,int len1,int len2){if ( (!p1)||(!p2)||(len1 != len2)) //如果p1 p2长度不同或者为空,直接返回{return false;}stack<int> s;int i = 0;//p1int j = 0;//p2while (j < len2){if (!s.empty() && s.top() == p2[j]) //s不为空,且s栈顶与p2相等 {s.pop(); //s出栈,p2++j++;}else //s为空或者s不为空但是栈顶和p2不等时,都要比较p1和p2的值{if (p1[i] == p2[j]) //如果相等{++i;++j;}else //如果不等{s.push(p1[i]);++i;}if (i > len1) //防止p1越界,但是有不能让它到了尽头就退出,应该过了最后一个再退出break;}}if (s.empty())return true;return false;}
阅读全文
0 0
- 给出入栈顺序,判断元素出栈顺序的合法性
- 判断元素出栈,入栈顺序的合法性
- 判断元素入栈,出栈顺序的合法性
- 判断元素出栈、入栈顺序的合法性
- 判断元素出栈,入栈顺序的合法性
- 判断元素出栈、入栈顺序的合法性
- 元素的出栈、入栈顺序的合法性。
- 栈--元素出栈、入栈顺序的合法性问题
- 元素出栈、入栈顺序的合法性
- 元素出栈、入栈顺序的合法性
- ~元素出栈、入栈顺序的合法性~
- 元素出栈、入栈顺序的合法性。
- 元素出栈、入栈顺序的合法性
- 元素出栈、入栈顺序的合法性。
- 元素出栈、入栈顺序的合法性
- 元素出栈、入栈顺序的合法性
- 元素出栈、入栈顺序的合法性
- 元素出栈、入栈顺序的合法性
- 血透常用语句
- 909422229_CXF+myeclipse进行发布接口
- JAVA设计模式-适配器模式(Adapter)
- Problem
- JAVA单例模式I 饿汉式 懒汉式 学习笔记
- 给出入栈顺序,判断元素出栈顺序的合法性
- ubuntu下实现批量修改文件后缀
- Java中static关键字用法总结
- 省市查询关联
- c语言基础知识点(一)
- statfs函数
- C语言INT64类型和GCC中的long long的定义,及sprintf格式字符串的定义
- Android系列之音乐播放器的实现一(应用内音频文件)
- java,C#之间的ASE加密实现