栈 括号匹配问题(C语言)
栈 括号匹配问题
问题描述:
假设一个算术表达式中可以包含三种括号:圆括号“(”和“)”,方括号“[”和“]”和花括号“{”和“ }”,且这
三种括号可按任意的次序嵌套使用(如:…[…{… …[…]…]…[…]…(…)…)。编写判别给定表达式
中所含括号是否正确配对出现的算法。输出结果YES 或者 NO。
解法:

先定义一个char型的数组,空间大小根据实际情况定义
char arr[100];
输入字符串
开始循环,直到arr为空;
检测每一个字符,如果字符为’ ( ’ 、‘ { ’或者’ [ ’,将字符入栈;如果不是这三个字符,先获取栈顶元素,赋值给x(如下),如果栈顶元素为’ ( ’同时arr[i]为‘ ) ’或者栈顶元素为’ { ’同时arr[i]为‘ } ’或者栈顶元素为’ [ ’同时arr[i]为‘ ] ’,将栈顶元素出栈。
for(i = 0;arr[i]!='\0';i++){
if(arr[i] == '('||arr[i] == '{'||arr[i] == '['){
push(s,arr[i]);
}
top(s,&x);
if((arr[i]==')'&&x == '(')||arr[i]=='}'&&x == '{'||arr[i]==']'&&x == '['){
pop(s);
}

该博客介绍了一个C语言实现的算法,用于检查算术表达式中的括号是否正确匹配。通过创建一个栈来存储遇到的左括号,并在遇到右括号时检查它们的配对情况。如果栈在遍历完表达式后为空,则输出YES,表示括号匹配;否则输出NO,表示存在未匹配的括号。
最低0.47元/天 解锁文章
2578





