c语言实现的括号匹配算法 无括号算术表达式处理算法
#include "seqstack.h"
#include "stdio.h"
void BracketMatch(char *str);
void BracketMatch(char *str) /* str[]中为输入的字符串,利用堆栈技术来检查该字符串中的括号是否匹配*/
{
SeqStack S;
int i;
char ch;
InitStack(&S);
for(i=0; str[i]!='\0'; i++) /*对字符串中的字符逐一扫描*/
{
switch(str[i])
{
case '(':
case '[':
case '{':
Push(&S,str[i]);
break;
case ')':
case ']':
case '}':
if(IsEmpty(&S))
{
printf("\n右括号多余!");
return;
}
else
{
GetTop(&S,&ch;);
if(Match(ch,str[i])) /*用Match判断两个括号是否匹配*/
Pop(&S,&ch;); /*已匹配的左括号出栈*/
else
{
printf("\n对应的左右括号不同类!");
return;
}
}
}/*switch*/
}/*for*/
if(IsEmpty(&S))
printf("\n括号匹配!");
else
printf("\n左括号多余!");
}
void main()
{
char str[100];
printf("please input:");
gets(str);
BracketMatch(str);
}
1