判断表达式中开闭括号是否配对出现。运用栈实现表达式开、闭括号是否配对出现算法

编程入门 行业动态 更新时间:2024-10-28 16:27:47

判断表达式中开闭<a href=https://www.elefans.com/category/jswz/34/1767470.html style=括号是否配对出现。运用栈实现表达式开、闭括号是否配对出现算法"/>

判断表达式中开闭括号是否配对出现。运用栈实现表达式开、闭括号是否配对出现算法

判断表达式中开闭括号是否配对出现。运用栈实现表达式开、闭括号是否配对出现算法

算法思想:
每次扫描到一个左括号就入栈,扫描到右括号就出一个栈顶元素,看括号类型是否匹配。

如果某次扫描到右括号发现栈中已无元素可出,则匹配失败(右括号多于左括号)
如果某次扫描到右括号,出栈顶元素,发现两个括号类型不一样,匹配失败
还有一种情况就是,你把右括号都扫描完了,结构栈中还有元素,匹配失败(左括号多于右括号)

bool bracketCheck(char str[], int length) {//str是一个字符数组,里面存储了各种左括号和右括号//len表示该字符数组有多长SqStack S;InitStack(&S);//初始化一个栈for (int i = 0;i < length;i++) {if (str[i] == '(' || str[i] == '[' || str[i] == '{') {Push(&S, str[i]);//扫描到左括号,入栈}else {if (StackEmpty(&S))//扫描到右括号,但栈空return false;//匹配失败char topElem;Pop(&S, &topElem);//栈顶元素出栈//括号不匹配的三种情况if (str[i] == ')'&&topElem != '(')return false;if (str[i] == ']'&&topElem != '[')return false;if (str[i] == '}'&&topElem != '{')return false;}}return StackEmpty(&S);//全部匹配完,如果栈空则匹配成功
}int main() {char str[6] = {'(',')','[',']','{','}'};int len=strlen(str);if (bracketCheck(str,6)) {printf("匹配成功");}else {printf("匹配失败");}return 0;
}

更多推荐

判断表达式中开闭括号是否配对出现。运用栈实现表达式开、闭括号是否配对出现算法

本文发布于:2023-11-16 18:37:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1632839.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:括号   表达式   算法   开闭

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!