栈的括号匹配的代码C语言
时间: 2024-04-10 09:33:05 浏览: 109
以下是一个使用 C 语言实现栈的括号匹配的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
// 栈结构
typedef struct {
char data[MAX_SIZE];
int top;
} Stack;
// 初始化栈
void initStack(Stack *stack) {
stack->top = -1;
}
// 判断栈是否为空
int isEmpty(Stack *stack) {
return stack->top == -1;
}
// 判断栈是否已满
int isFull(Stack *stack) {
return stack->top == MAX_SIZE - 1;
}
// 入栈
void push(Stack *stack, char item) {
if (isFull(stack)) {
printf("栈已满,无法入栈。\n");
return;
}
stack->data[++stack->top] = item;
}
// 出栈
char pop(Stack *stack) {
if (isEmpty(stack)) {
printf("栈为空,无法出栈。\n");
return '\0';
}
return stack->data[stack->top--];
}
// 括号匹配函数
int bracketMatch(char *expression) {
Stack stack;
initStack(&stack);
int i = 0;
while (expression[i] != '\0') {
if (expression[i] == '(' || expression[i] == '[' || expression[i] == '{') {
push(&stack, expression[i]);
}
else if (expression[i] == ')' || expression[i] == ']' || expression[i] == '}') {
if (isEmpty(&stack)) {
return 0;
}
char top = pop(&stack);
if ((expression[i] == ')' && top != '(') ||
(expression[i] == ']' && top != '[') ||
(expression[i] == '}' && top != '{')) {
return 0;
}
}
i++;
}
return isEmpty(&stack);
}
int main() {
char expression[MAX_SIZE];
printf("请输入一个表达式:");
fgets(expression, MAX_SIZE, stdin);
int result = bracketMatch(expression);
if (result) {
printf("括号匹配成功!\n");
} else {
printf("括号匹配失败!\n");
}
return 0;
}
```
这段代码实现了一个简单的栈结构,并使用栈来进行括号匹配。通过输入一个表达式,代码会判断表达式中的括号是否匹配。如果匹配成功,则输出"括号匹配成功!",否则输出"括号匹配失败!"。
阅读全文