使用C语言编写算法,判断一个表达式的括号是否被正确配对,表达式已存入字符数组exp[],表达式中字符个数为n.
时间: 2024-11-10 12:14:33 浏览: 21
设计一个算法判别一个算术表达式的圆括号是否正确配对
要使用C语言编写一个算法来检查括号是否正确配对,你可以采用栈数据结构来辅助。以下是步骤:
1. 定义一个空栈,用于存放左括号。
2. 遍历输入的字符数组`exp[]`,对于每一个字符:
- 如果是左括号(例如'('、'{', '['),将其压入栈中。
- 如果是右括号(例如')'、'}', ']`):
- 否则,说明遇到了错误,因为找不到匹配的左括号,返回false(或直接输出提示信息)。
3. 遍历结束后,如果栈为空,表示所有的左括号都找到了正确的匹配,返回true;否则,有未配对的左括号,返回false。
下面是一个简单的C语言函数示例:
```c
#include <stdbool.h>
#include <stdio.h>
bool isParenthesesMatch(char exp[], int n) {
stack<char> s;
for (int i = 0; i < n; ++i) {
if (exp[i] == '(' || exp[i] == '{' || exp[i] == '[') {
s.push(exp[i]);
} else if (exp[i] == ')' && !s.empty() && s.top() == '(') {
s.pop();
} else if (exp[i] == '}' && !s.empty() && s.top() == '{') {
s.pop();
} else if (exp[i] == ']' && !s.empty() && s.top() == '[') {
s.pop();
} else {
return false; // 找不到匹配的左括号
}
}
return s.empty(); // 栈为空表示所有括号都被正确配对
}
// 示例使用
int main() {
char exp[] = "((()))";
int n = sizeof(exp) / sizeof(exp[0]);
bool result = isParenthesesMatch(exp, n);
if (result)
printf("括号配对正确\n");
else
printf("括号配对错误\n");
return 0;
}
```
阅读全文