一道数据结构题:设计算法判断一个算术表达式的圆括号是否正确配对。

对表达式进行扫描,凡遇‘(’就进栈,遇‘)’就退掉栈顶的‘(’,表达式扫描完毕,栈应为空。用C++语言编写,谢谢!

第1个回答  推荐于2017-05-26
#include "seqstack1.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);
}
这是对所输入的字符串进行括号匹配,所有的括号都包括,你可以参考一下,另外这是c语言写的代码,你可以适当的修改一下。。。。有问题再联系。。。。本回答被网友采纳