栈的应用-括号匹配
栈的应用非常广泛,鉴于初学者,掌握括号匹配。括号匹配在实际编程中也是很重要的,并不是说这个程序是重要的,是编程的规范之一就是保证括号匹配,当然在编译器中,括号匹配这项工作编译器会帮助我们来做,像idea等等,那么其中的原理就是栈的应用,废话不多说,直接上代码,本人也是初学者,大佬请绕路。
#include<iostream>
#define MaxSize 10
using namespace std;
#define MaxSize 10
typedef struct{
char data[MaxSize];
int top;
}SqStack;
void chushihua(SqStack &S){
S.top = -1;
}
bool brackeCheck(char str[],int length){ //char数组表示存储括号的字符串,length表示字符串的长度
SqStack S ;
chushihua(S);
for(int i =0;i <length;i++){
//遍历要检查的字符数组,当检查到有左括号的时候,就让左括号进栈
if(str[i]=='(' || str[i] == '[' || str[i] == '{'){
S.data[++S.top] = str[i];//左括号进栈
}else{//遇到右括号,先检查栈是否为空,此时,如果栈时空的,则证明匹配失败,
//如果栈不是空的,那么栈顶元素出栈,与遍历到的字符进行比较
if(S.top == -1){
return false;
}
char topElem = S.data[S.top--];//左括号出栈
if(str[i]==')' && topElem != '('){
return false;
}
if(str[i]== ']' && topElem != '['){
return false;
}
if(str[i] == '}' && topElem!='{'){
return false;
}
}
if(S.top ==-1){
return true;
}
}
}
int main(){
//测试字符串
char str[6] ={'{','{','{','}','}','}'};
bool b = brackeCheck(str,6);
if(b == false){
cout<<"匹配失败"<<endl;
}else{
cout<<"匹配成功"<<endl;
}
cout<<b<<endl;
return 0;
}
代码比较垃圾,请大佬勿喷!!