算术表达式求值:“算符优先级法”、“后缀表达式法”

本文介绍了两种算术表达式求值的方法:算符优先级法和后缀表达式法。通过理解并实践这两种方法,可以帮助读者更好地掌握表达式求值的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法1:

该方法来自严蔚敏版数据结构,基本思路是:设置两个工作栈,一个操作数栈,一个操作符栈,在(自左至右)扫描算术表达式时,遇到操作数直接入操作数栈,若遇到操作符,则根据操作符优先级判断下一步操作( “操作符优先级规则 ”):若其优先级高于栈顶操作符,则入栈,否则(相等或小于),弹出栈顶算符并从操作数栈弹出两个操作数,计算,将计算结果入操作数栈,继续比较与栈顶操作符的优先级,若仍然等于或低于之,则计算,直至大于之,则将此操作符入栈;左括号一定入栈,且其优先级低于后续来到的任何操作符,右括号一定出栈并计算直至遇到左括号,另外栈的开始以“#”开始,算术表达式以“#”结束,做结束标志。当栈空时,计算结束。

方法2:

采用后缀表达式,即“逆波兰式”,因为计算机处理后缀表达式求值问题比较方便,在计算时只需要一个操作数栈,即:将遇到的操作数入栈,凡是遇到操作符便从栈中弹出两个操作数执行计算,并将结果存于栈中,直到后缀表达式的最后一个操作符处理完毕,最后一个入栈的数值即为最终的表达式的值。这里的关键是怎样求得表达式的后缀表达式,其规则与方法1的 “操作符优先级规则” 基本一致,具体是这样的:转化过程只需
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值