判断出栈序列是否合法
来源:互联网 发布:淘宝上传3c认证入口 编辑:程序博客网 时间:2024/04/29 00:59
题目描述:1--元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。入栈的序列(1,2,3,4,5),出栈序列为(4,5,2,3,1),则不合法。
分析如下:
1.如果两个数组长度不相等,直接不合法
2.如果两个数组都为空,合法
3.S用来正常的压栈,q村正确的出栈序列
代码如下:
#include<iostream>#include<stack>#include<queue>using namespace std;queue<int> StackSort(int* v1,int* v2,int size1,int size2 )//{stack<int> s;queue<int> q;int i=0;int j=0;while(i<size1){if(v1[i]!=v2[j]){s.push (v1[i]);i++;}else{s.push (v1[i]);q.push(s.top());s.pop();i++;j++;}}while(!s.empty ()){q.push(s.top ());s.pop();}return q;}bool IsStackSort(int* v1,int* v2,int size1,int size2 ){if(v1==NULL&&v2==NULL)//两个为空return true;if(size1!=size2)//两个不相等return false;queue<int> q=StackSort(v1,v2,size1,size2 ); int i=0;while(i<size1){//cout<<q.front()<<" ";if(v2[i]!=q.front ())//判断q和v2是否相同{return false;}q.pop();i++;}return true;}void test1(){int v1[]={1,2,3,4,5};int v2[]={4,5,3,2,1};
int size1=sizeof(v1)/sizeof(v1[0]);int size2=sizeof(v2)/sizeof(v2[0]);bool l=IsStackSort( v1,v2 ,size1,size2);if(l==1)cout<<"合法"<<endl;elsecout<<"不合法"<<endl;cout<<l<<endl;}int main(){test1();system("pause");return 0;}
运行结果:
阅读全文
1 2
- 判断出栈序列是否合法
- 判断出栈序列是否合法
- 判断出栈序列是否合法
- 判断出栈序列是否合法
- 栈--判断出栈序列是否合法
- 给定入栈序列判断给定出栈序列是否合法
- 给定入栈序列,判断出栈序列是否合法
- 给出入栈序列,快速判断出栈序列是否合法
- 3.5判断出栈和入栈操作序列是否合法
- UVA 514 栈判断出栈序列是否合法
- 判断一个序列的出栈次序是否合法
- 判断出栈顺序是否合法
- 判断栈操作序列是否合法
- 给定入栈序列判断给定出栈序列是否合法(Exercise1_3_45,java)
- 剑指offer-给出一个入栈序列和一个出栈序列,判断出栈序列是否合法。
- 根据入栈判断出栈是否合法
- 栈-判断某个出栈顺序是否合法
- 判断某个出栈顺序是否合法
- 通过ext3grep恢复误删除的文件和表
- Eclipse中使用JUnit4进行单元测试
- HDU 4585 Shaolin(Treap)
- 安装Kibana 5.5.0(Windows)
- 你需要明白的索引和约束的前缀(AK,PK,IX,CK,FK,DF,UQ)
- 判断出栈序列是否合法
- ocp Oracle.1z0-053 711 -- 18
- 详解邻接表
- HotSpot垃圾收集器
- 恨铁不成钢的百度啊!吃瓜群众真为你操碎了心....
- Python语言在数据挖掘上非常有优势,但它唯一的缺点你知道吗?
- Java8重新认识HashMap
- 链表的创建与删除链表中的元素
- blr:expression(this.onFocus=this.blur())