C 判断字符串 括号是否匹配,```c
/.按“3.2.2 括号匹配的检验”中的思路,写一个函数“bool check(char* line)”
//检查输入的字符串line中的括号是否匹配,不匹配则check函数返回false,否则返回true
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define STACKLENGTH 20
char stack[STACKLENGTH];
int top = STACKLENGTH;
//判断栈是否为空
int Empty() {
if (top == STACKLENGTH)
return 1;
return 0;
}
void Push(char ch)
{
top–;
stack[top] = ch;
}
char Pop()
{
char ch = stack[top];
top++;
return ch;
}
/括号匹配的检验/
bool Check(char* line)
{
while (*line != ‘\0’)
{
char chLeft = ‘\0’;
char chRight = ‘\0’;
char ch = *line;
switch (ch)
{
case ‘(’:
case ‘[’:
case ‘{’:
Push(ch); // 找到左括号 进栈
break;
case ‘)’:
chLeft = ‘(’;
chRight = ch;
break;
case ‘]’:
chLeft = ‘[’;
chRight = ch;
break;
case ‘}’:
chLeft = ‘{’;
chRight = ch;
break;
default:
break;
}
if (chRight == ch) // 找到右括号
{
if (Empty())
{
return 0;
}
else
{
char t = Pop(); // 出栈
if (t != chLeft) {
return false;
}
}
}
line++;
}
if (Empty())
{
return true;
}
return false;
}
int main(void)
{
char array[1024];
gets_s(array);
int i = Check(array);
if (i == 1) {
printf(“1\n”);
}
else {
printf(“0\n”);
}
return 0;
}
该博客介绍了如何使用C语言编写一个函数`Check(char* line)`,用于判断输入的字符串中的括号是否匹配。通过定义一个栈来存储左括号,并与遇到的右括号进行比较,从而确定括号的匹配情况。如果字符串结束时栈为空,则说明括号匹配成功,否则匹配失败。示例代码中包含了完整的功能实现和主函数`main()`。

5082

被折叠的 条评论
为什么被折叠?



