c语言用户输入的任意表达式,假设表达式中含有1种括号:(),其嵌套的顺序随意。检验括号是否匹配,输出结果为匹配或不匹配。 提示:遇到左括号就进栈,遇到右括号就出栈显示。代码
时间: 2024-10-24 09:06:44 浏览: 28
在C语言中,可以使用栈数据结构来检查括号的匹配。这里是一个简单的算法描述以及示例代码:
**算法步骤:**
1. 初始化一个空栈。
2. 遍历输入的字符流,对于每个字符:
- 如果是'(',将其压入栈中。
- 如果是')':
- 如果栈为空,说明不匹配,返回"不匹配"。
- 否则,弹出栈顶元素(上一个遇到的'('),如果它们不配对(即不是成对的), 返回"不匹配"。
3. 如果遍历结束后栈为空,说明所有括号都已配对,返回"匹配";否则返回"不匹配"。
**C语言代码示例(只包含基本逻辑,未包括错误处理和输入读取):**
```c
#include <stdio.h>
#include <stdbool.h>
bool isParenthesesMatch(char input[], int length) {
stack<char> s;
for (int i = 0; i < length; ++i) {
if (input[i] == '(') {
s.push('(');
} else if (input[i] == ')') {
if (s.empty()) {
return false; // 没有左括号,直接不匹配
} else {
s.pop(); // 出栈左括号
}
}
}
// 判断栈是否为空,为空则匹配
return s.empty();
}
int main() {
char expr[] = "((()))"; // 测试字符串
int len = strlen(expr);
bool result = isParenthesesMatch(expr, len);
if (result) {
printf("括号匹配。\n");
} else {
printf("括号不匹配。\n");
}
return 0;
}
```
阅读全文