#include<stdio.h>
#define MAXSIZE 100
int match()
{
char str[MAXSIZE];
printf("请输入字符串");
scanf("%s",str);
char *s=str;//用指针s遍历字符串数组中的字符
char S[MAXSIZE];
int top=-1;
while(*s!=NULL)
{
if(*s=='('||*s=='['||*s=='{')
{
S[++top]=*s;
s++;//遇到左括号 入栈 指针后移
}
else if(*s==')')//遇到右小括号 判断栈顶元素是不是左小括号
{
if(S[top--]!='(')
{
printf("')'匹配失败");
return 0;
}
s++;
}
else if(*s==']')//遇到右中括号 判断栈顶元素是不是左中括号
{
if(S[top--]!='[')
{
printf("']'匹配失败");
return 0;
}
s++;
}
else if(*s=='}')//遇到右中括号 判断栈顶元素是不是左中括号
{
if(S[top--]!='{')
{
printf("'}'匹配失败");
return 0;
}
s++;
}
}
if(top!=-1)//循环遍历结束 栈不为空 则数量不匹配
{
printf("数量不匹配");
return 0;
}
else
{
printf("匹配成功");
return 1;
}
}
int main()
{
match();
}
括号匹配算法
最新推荐文章于 2022-05-31 21:46:28 发布