用C语言数据结构写程序括号匹配的检验
时间: 2023-05-23 08:03:32 浏览: 102
可以使用栈来实现括号匹配的检验。具体步骤如下:
1. 创建一个栈结构,可以用数组或链表实现。
2. 遍历字符串中的每个字符,如果是左括号,则将其入栈。如果是右括号,则将栈顶元素出栈,并判断是否与当前字符匹配。如果不匹配,说明括号不合法。
3. 遍历完字符串后,如果栈为空,则说明所有括号都匹配,否则括号不合法。
以下是C语言代码实现:
```c
#include <stdio.h>
#define MAX_STACK_SIZE 100
// 栈结构体
typedef struct {
char data[MAX_STACK_SIZE];
int top;
} Stack;
// 初始化栈
void initStack(Stack* stack) {
stack->top = -1;
}
// 压栈
void push(Stack* stack, char c) {
stack->data[++stack->top] = c;
}
// 弹栈
char pop(Stack* stack) {
return stack->data[stack->top--];
}
// 判断栈是否为空
int isEmpty(Stack* stack) {
return stack->top == -1;
}
// 括号匹配检验
int checkBracketMatch(char* str) {
Stack stack;
initStack(&stack);
char c;
for (int i = 0; str[i]; i++) {
c = str[i];
if (c == '(' || c == '[' || c == '{') { // 左括号入栈
push(&stack, c);
} else if (c == ')' || c == ']' || c == '}') { // 右括号出栈匹配
if (isEmpty(&stack)) {
return 0; // 栈为空,右括号不合法
}
char top = pop(&stack);
if ((top == '(' && c != ')') ||
(top == '[' && c != ']') ||
(top == '{' && c != '}')) {
return 0; // 括号不匹配
}
}
}
return isEmpty(&stack); // 栈为空,括号匹配成功;否则,括号不合法
}
int main() {
char str[] = "()(){}[()()]";
int result = checkBracketMatch(str);
if (result) {
printf("括号匹配成功!\n");
} else {
printf("括号不合法!\n");
}
return 0;
}
```
阅读全文