栈的应用举例——括号匹配的检验

来源:互联网 发布:淘宝小卖家还能做吗 编辑:程序博客网 时间:2024/05/11 19:15
#include<iostream>#include"SqStack.h"using namespace std;#define NUM 20/* 说明:用1代表"(", 用2代表“)”, 用3代表“[”, 用4代表“]”*/void Bracket(SqStack &S,SqStack &SS){int e,m;SOP.InitStack(S);//初始化栈SSOP.InitStack(SS);cout<<"用1代表'(', 用2代表')', 用3代表'[', 用4代表']'"<<endl;for(int i=1;i<=NUM;i++){cin>>e;//输入括号所代表的数字if(1==e||3==e)//若是左括号“(”或“[”,则入栈SOP.Push(S,SS,e);else if(2==e)//若是右括号“)”,则与栈顶元素比较{SOP.GetTop(S,m);//用m返回栈顶元素的值if(1==m)//若栈顶元素是与“)”相匹配的“(”SOP.Pop(S,m);//将元素出栈}//elseifelse if(4==e)//若是右括号"]",同理,则与栈顶元素比较{SOP.GetTop(S,m);if(3==m)//若栈顶元素是“[”SOP.Pop(S,m);}//else if2else//输入的数不是1—4{cout<<"输入有误"<<endl;exit(-1);}//else}//forif(SOP.StackEmpty(S))//若栈空,说明全部匹配成功cout<<"括号匹配成功"<<endl;else cout<<"括号匹配不成功"<<endl;}//Bracketvoid main(){SqStack S,SS;Bracket(S,SS);SOP.DestroyStack(S);SOP.DestroyStack(SS);}//main

假设输入为:()()(())[][[]][[)(]];


0 0
原创粉丝点击