这是一个用C语言实现的用于解决括号匹配问题的算法。该算法使用了一个栈来存储括号。首先,我们初始化一个空栈。然后,我们遍历输入字符串中的每个字符。如果字符是一个开放的括号(如'('或'['),我们将其推入栈中。如果字符是一个封闭的括号(如')'或']'),我们检查栈顶元素是否与其匹配。如果匹配,我们将栈顶元素弹出。如果不匹配,则返回false,表示输入字符串中的括号不匹配。最后,如果遍历完所有字符后栈为空,说明括号匹配,返回true;否则返回false。
```c
#include<stdio.h>
#include<stdbool.h>
bool is_match(char *s) {
int top = 0;
char stack[1000];
while (*s != '\0') {
if (*s == '(' || *s == '[') {
stack[top++] = *s;
} else if (*s == ')' || *s == ']') {
if (top == 0 || stack[--top] != *s) {
return false;
}
}
s++;
}
return top == 0;
}
int main() {
char str[1000];
printf("Enter a string: ");
scanf("%s", str);
if (is_match(str)) {
printf("The string is matched.\n");
} else {
printf("The string is not matched.\n");
}
return 0;
}
```
该代码首先定义了一个`is_match`函数,该函数接受一个字符串`s`作为输入,并返回一个布尔值,表示该字符串中的括号是否匹配。在`main`函数中,我们读取用户输入的字符串,并调用`is_match`函数来检查该字符串中的括号是否匹配。如果是,则打印"The string is matched.";否则打印"The string is not matched."。