
一道数据结构题:设计算法判断一个算术表达式的圆括号是否正确配对。
对表达式进行扫描,凡遇‘(’就进栈,遇‘)’就退掉栈顶的‘(’,表达式扫描完毕,栈应为空。用C++语言编写,谢谢!...
对表达式进行扫描,凡遇‘(’就进栈,遇‘)’就退掉栈顶的‘(’,表达式扫描完毕,栈应为空。用C++语言编写,谢谢!
展开
展开全部
#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语言写的代码,你可以适当的修改一下。。。。有问题再联系。。。。
#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语言写的代码,你可以适当的修改一下。。。。有问题再联系。。。。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?

2025-08-05 广告
Paykka 的数字化流程涵盖了开户、收款、提现等全流程,从资料提交、账户开通到各种资金操作,都能在线上完成,无需用户进行线下干预,简化了操作步骤,提升了整体的操作效率。...
点击进入详情页
本回答由paykka提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询