用C语言写一个程序,判断一个可能含有花括号、中括号、和圆括号的表达式中各类括号是否匹配,若匹配,则返回1;否则返回0。表中表达式只包含三种括号,花括号{}、中括号[]、圆括号(),即它仅由 (、)、[、]、{、}六个字符组成。输入说明:输入一串只包含上述括号的字符串(中间用空格隔开)
时间: 2023-05-21 08:06:16 浏览: 70
用C语言实现数据结构问题 括号匹配
下面是一个用C语言实现的判断括号匹配的函数:
```c
int check_parentheses_match(const char *str) {
int len = strlen(str);
char parentheses_stack[len];
int top = -1;
for (int i = 0; i < len; ++i) {
if (str[i] == '(' || str[i] == '[' || str[i] == '{') {
parentheses_stack[++top] = str[i];
} else if (str[i] == ')' || str[i] == ']' || str[i] == '}') {
if (top == -1) {
return 0;
}
char top_element = parentheses_stack[top--];
if (str[i] == ')' && top_element != '(') {
return 0;
} else if (str[i] == ']' && top_element != '[') {
return 0;
} else if (str[i] == '}' && top_element != '{') {
return 0;
}
}
}
return top == -1;
}
```
该函数使用了一个栈来判断括号是否匹配,如果遇到左括号就把它压入栈中,如果遇到右括号就取出栈顶元素进行匹配,如果匹配成功就继续往后处理,否则直接返回0表示不匹配。最后如果栈为空,则返回1表示括号匹配成功。
阅读全文