C语言编写链栈判断输入的表达式中括号是否配对(假设只含有左、右圆括号)
时间: 2024-10-14 14:08:26 浏览: 53
青少年软件编程(C语言)等级考试试卷(六级)
在C语言中,要编写一个程序来检查输入的表达式的括号是否配对,你可以采用递归回溯法,利用一个栈数据结构来跟踪未关闭的左括号。以下是步骤:
1. 定义两个栈,一个用于存储遇到的左括号('('),另一个用于存储当前匹配的左右括号对。
2. 遍历输入字符串,对于每个字符:
- 如果是左括号('('),压入左括号栈。
- 如果是右括号(')', 则检查栈顶元素是否为左括号。如果是,弹出栈顶元素并继续;否则,说明不匹配,返回false。
3. 在遍历结束后,如果左括号栈为空,表示所有括号都已找到对应,返回true;否则,返回false,表示存在不匹配的括号。
下面是一个简单的C函数示例:
```c
#include <stdbool.h>
#include <stdio.h>
bool isParenthesesMatched(char* expression) {
stack<char> openStack;
for (char c : expression) {
if (c == '(')
openStack.push(c);
else if (c == ')') {
if (openStack.empty())
return false; // 匹配失败,直接返回
openStack.pop();
}
}
return openStack.empty(); // 检查是否还有剩余的左括号
}
int main() {
char expression[] = "((()))";
bool result = isParenthesesMatched(expression);
if (result)
printf("括号配对成功\n");
else
printf("括号配对失败\n");
return 0;
}
```
阅读全文