用c++写一个括号匹配的代码
时间: 2024-05-06 13:19:56 浏览: 57
c++括号匹配
5星 · 资源好评率100%
以下是一个简单的括号匹配代码,使用栈来实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100
// 定义栈结构
typedef struct {
char data[MAX_SIZE];
int top;
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
int is_empty(Stack *s) {
return s->top == -1;
}
// 判断栈是否已满
int is_full(Stack *s) {
return s->top == MAX_SIZE - 1;
}
// 入栈操作
void push(Stack *s, char c) {
if (is_full(s)) {
printf("Stack overflow!\n");
exit(1);
}
s->data[++s->top] = c;
}
// 出栈操作
char pop(Stack *s) {
if (is_empty(s)) {
printf("Stack underflow!\n");
exit(1);
}
return s->data[s->top--];
}
// 判断括号是否匹配
int is_matching(char left, char right) {
if (left == '(' && right == ')') {
return 1;
} else if (left == '[' && right == ']') {
return 1;
} else if (left == '{' && right == '}') {
return 1;
} else {
return 0;
}
}
int main() {
char str[MAX_SIZE];
Stack s;
int i, len;
printf("请输入一个字符串:");
scanf("%s", str);
len = strlen(str);
init(&s);
for (i = 0; i < len; i++) {
if (str[i] == '(' || str[i] == '[' || str[i] == '{') {
push(&s, str[i]);
} else if (str[i] == ')' || str[i] == ']' || str[i] == '}') {
if (is_empty(&s)) {
printf("Right bracket is more than left!\n");
exit(1);
} else if (!is_matching(pop(&s), str[i])) {
printf("Bracket does not match!\n");
exit(1);
}
}
}
if (!is_empty(&s)) {
printf("Left bracket is more than right!\n");
exit(1);
}
printf("Bracket match!\n");
return 0;
}
```
注意,这个代码只是一个简单的实现,实际应用时还需要考虑更多的情况,比如说字符串中除了括号还有其他字符的情况。
阅读全文