2021-11-04

栈的应用-括号匹配


栈的应用非常广泛,鉴于初学者,掌握括号匹配。括号匹配在实际编程中也是很重要的,并不是说这个程序是重要的,是编程的规范之一就是保证括号匹配,当然在编译器中,括号匹配这项工作编译器会帮助我们来做,像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;
}

代码比较垃圾,请大佬勿喷!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值