一般来说都是用栈实现的 下面是用数组实现 供参考
#include<stdio.h>
bool compare()
{
char str1[10] = { '{','{','(',')','}','}' }; //准备判定的数组
char str2[10] = {}; //存放左括号的数组
int top2 = -1; //标记str2数组的下标
for (int i = 0; i < 6; i++) //循环6个待判定的括号
{
if (str1[i] == '{' || str1[i] == '(' || str1[i] == '[') //判断是否为左括号
{
top2++;
str2[top2] = str1[i];
}
else
{
if (top2 == -1) //判断左括号数组是否为空 为空的话右括号没得匹配
{
return false;
}
else //判断是否匹配
{
if (str1[i] == '}' && str2[top2] != '{')
return false;
if (str1[i] == ')' && str2[top2] != '(')
return false;
if (str1[i] == ']' && str2[top2] != '[')
return false;
top2--; //匹配完逻辑上去除左括号里的数
}
}
}
if (top2 != -1) //判断左括号数组是否为空 如果全部匹配完 还剩下左括号没得匹配的
return false;
return true;
}
int main()
{
bool ret;
ret = compare(); //接收函数返回值
if (ret)
printf("succeed"); //成功
else
printf("fail"); //失败
return 0;
}
上图是用栈写代码的流程图 用数组其实也是一样的思路