括号匹配问题 栈c语言代码
时间: 2023-09-04 11:16:26 浏览: 128
好的,我可以回答关于编程问题的提问。以下是一个括号匹配的栈C语言代码示例:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100
char stack[MAX_SIZE];
int top = -1;
void push(char ch) {
if (top == MAX_SIZE - 1) {
printf("Stack overflow\n");
exit(1);
}
stack[++top] = ch;
}
char pop() {
if (top == -1) {
printf("Stack underflow\n");
exit(1);
}
return stack[top--];
}
int isPair(char open, char close) {
if (open == '(' && close == ')')
return 1;
else if (open == '{' && close == '}')
return 1;
else if (open == '[' && close == ']')
return 1;
else
return 0;
}
int isBalanced(char* exp) {
for (int i = 0; i < strlen(exp); i++) {
if (exp[i] == '(' || exp[i] == '{' || exp[i] == '[') {
push(exp[i]);
} else if (exp[i] == ')' || exp[i] == '}' || exp[i] == ']') {
if (top == -1 || !isPair(pop(), exp[i]))
return 0;
}
}
if (top == -1)
return 1;
else
return 0;
}
int main() {
char exp[MAX_SIZE];
printf("Enter the expression: ");
fgets(exp, MAX_SIZE, stdin);
if (isBalanced(exp))
printf("The expression is balanced\n");
else
printf("The expression is not balanced\n");
return 0;
}
```
该代码可以用于判断一个表达式中的括号是否匹配。如果表达式中每个左括号都有对应的右括号,且左右括号的顺序正确,那么表达式就是匹配的。如果不匹配,程序会输出一条错误信息。
阅读全文