2. 试设计一个算法:检查一个程序中的花括号、方括号和圆括号是否配对,若能够 全部配对则返回1,否则返回0。
时间: 2023-05-22 08:04:14 浏览: 100
可以使用栈来解决这个问题,遇到左括号时将其入栈,遇到右括号时将栈顶元素与其匹配,如果匹配成功则弹出栈顶元素,否则返回0。最后如果栈为空则返回1,否则返回0。以下是示例代码:
```
int check_brackets(char* program) {
char stack[1000];
int top = -1;
for (int i = 0; program[i] != '\0'; i++) {
if (program[i] == '(' || program[i] == '[' || program[i] == '{') {
stack[++top] = program[i];
} else if (program[i] == ')') {
if (top >= 0 && stack[top] == '(') {
top--;
} else {
return 0;
}
} else if (program[i] == ']') {
if (top >= 0 && stack[top] == '[') {
top--;
} else {
return 0;
}
} else if (program[i] == '}') {
if (top >= 0 && stack[top] == '{') {
top--;
} else {
return 0;
}
}
}
return (top == -1) ? 1 : 0;
}
```
可以将程序作为参数传入 check_brackets 函数中进行检查,返回值为1表示括号全部配对,返回值为0表示括号存在不配对的情况。
阅读全文