数据结构栈应用括号匹配算法

一个算数表达式含有三种类型的括弧,且需含有一个correct(exp,tag)的函数判断括弧是否配对,exp为字符串类型变量,tag为布尔型的,急需一个完整的算法... 一个算数表达式含有三种类型的括弧,且需含有一个correct(exp,tag)的函数判断括弧是否配对,exp为字符串类型变量,tag为布尔型的,急需一个完整的算法 展开
 我来答
听不清啊
高粉答主

2013-03-13 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:2.3亿
展开全部
算法如下:

从左开始向右扫描该表达式,
1、如遇左括号(不论哪一种),将该左括号入栈;
2、如是右括号,如栈为空则返回出错信息,不空就检查其是否与栈顶左括号是否配对,如是则栈顶元素出栈后继续扫描(转1 ),否则,返回出错信息(出错类型:右括号先出现,或左右括号不匹配,出错位置);
3、如是其它字符,直接跳过,继续扫描,如表达式未完则转1;表达式结束转4。
4、如栈空,显示“匹配正确!”,否则显示“缺失右括号!”。
更多追问追答
追问
可是代码怎么实现呀?热心的亲们^o^
追答
你是要算法还是要程序啊?
laughlee7468
2013-10-07 · TA获得超过2004个赞
知道小有建树答主
回答量:541
采纳率:100%
帮助的人:734万
展开全部
bool correct(char *str) {
Stack<char> s;
int n = strlen(str);
for(int i = 0; i < n; i++) {
switch(str[i]) {
case '(': ;
case '[': ;
case '{': s.Push(str[i]); break;
case ')': if(s.IsEmpty( ) || s.Pop( ) != '(') return false; break;
case ']': if(s.IsEmpty( ) || s.Pop( ) != '[') return false; break;
case '}': if(s.IsEmpty( ) || s.Pop( ) != '{') return false;
}
}
return s.IsEmpty( );
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式