c语言数据结构代码.用户输入的任意表达式,假设表达式中含有1种括号:(),其嵌套的顺序随意。检验括号是否匹配,输出结果为匹配或不匹配。 提示:遇到左括号就进栈,遇到右括号就出栈
时间: 2024-10-24 19:17:45 浏览: 22
在C语言中,你可以使用栈数据结构来实现这个括号匹配的问题。这里是一个简单的例子,使用数组模拟栈:
```c
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#define MAX_TOKENS 100
#define LEFT_PAREN '('
#define RIGHT_PAREN ')'
bool isParenthesesMatch(char* expression) {
stack_t tokens[MAX_TOKENS]; // 使用字符数组作为栈
int top = -1;
for (int i = 0; expression[i] != '\0'; ++i) {
if (expression[i] == LEFT_PAREN) { // 遇到左括号
tokens[++top] = expression[i];
} else if (expression[i] == RIGHT_PAREN) { // 遇到右括号
if (top == -1 || tokens[top] != LEFT_PAREN) { // 栈顶不是左括号或已空,不匹配
return false;
}
top--; // 出栈
}
}
// 如果所有右括号都找到了对应的左括号,且栈为空,则匹配
return top == -1;
}
int main() {
char input[100];
printf("请输入包含括号的表达式:");
scanf("%s", input);
if (isParenthesesMatch(input)) {
printf("括号匹配。\n");
} else {
printf("括号不匹配。\n");
}
return 0;
}
```
在这个代码中,我们遍历输入的表达式,如果遇到左括号就压入栈,遇到右括号时检查栈顶元素是否为左括号,如果是则出栈,否则说明不匹配。最后,如果栈为空,那么所有的括号都匹配。
阅读全文