判断括号是否闭合C语言
时间: 2024-10-15 07:09:32 浏览: 26
左右括号匹配(栈实现C语言)1
在C语言中判断括号是否闭合通常涉及到栈的数据结构。你可以创建一个字符数组或者字符串,遍历这个数组,遇到左括号(如'('、'{', '[')时就将其压入栈中,遇到右括号(如')'、'}', ']')时检查栈顶元素是否与其匹配。如果当前的右括号可以匹配栈顶的左括号,则弹出栈顶元素;如果不匹配,或者遍历结束还有剩余的左括号未匹配,那么说明括号没有闭合。
这里是一个简单的示例代码片段:
```c
#include <stdio.h>
#include <stdbool.h>
#include <stack>
bool isParenthesesBalanced(char str[]) {
stack<char> s;
for (int i = 0; str[i] != '\0'; ++i) {
if (str[i] == '(' || str[i] == '{' || str[i] == '[') {
s.push(str[i]);
} else if (str[i] == ')' && !s.empty() && s.top() == '(') {
s.pop();
} else if (str[i] == '}' && !s.empty() && s.top() == '{') {
s.pop();
} else if (str[i] == ']' && !s.empty() && s.top() == '[') {
s.pop();
} else {
return false; // 匹配失败,直接返回false
}
}
// 如果遍历完还剩有括号未匹配,说明不平衡
return s.empty();
}
int main() {
char str[] = "({[()]})";
if (isParenthesesBalanced(str)) {
printf("括号平衡\n");
} else {
printf("括号不平衡\n");
}
return 0;
}
```
阅读全文