面对一个包含加减乘除的混合运算表达式时,如何准确求值?通常可借助栈这一数据结构来实现。整个过程分为两步:首先将中缀表达式转换为后缀表达式,然后计算后缀表达式的数值。关于中缀转后缀的方法此前已有介绍。本文重点讲解如何利用栈结构来求解后缀表达式的值。通过从左到右扫描后缀表达式,遇到操作数时入栈,遇到运算符时弹出栈顶两个元素进行相应运算,并将结果重新压入栈中,最终栈内唯一剩余的元素即为表达式的计算结果。
1、 以该后缀表达式为例进行计算:
2、 对应的中缀表达式是((2+3)×8+5+3)×6。
3、 构建一个堆栈结构
4、 从左至右遍历后缀表达式,依次将操作数存入栈中。
5、 若扫描到操作数,应将其存入堆栈结构中。
6、 当扫描到操作符时,从堆栈中弹出两个操作数,用该操作符对它们进行运算,并将结果压入堆栈。
7、 当后缀表达式扫描结束后,栈中唯一剩下的数值即为最终计算结果。
8、 以下是我根据该算法编写的代码,供参考使用。
9、 大家可结合自身想法自由发挥创作。
10、 {
11、 {
12、 {
13、 }
14、 {
15、 }
16、 {
17、 }
18、 }
19、 }
评论
更多评论