中缀表达式转后缀表达式及后缀表达式的计算

1.中缀表达式转后缀表达式

这里举个栗子手动转换叭:
ps:以下红色括号皆为添加后的效果!

中缀表达式:(5+20+1*3)/14

  1. 按运算符优先级对所有运算符和它的运算数加括号(原本的括号不用加)
    ( ( ( 5+20 ) + ( 1*3 )) / 14 )

  2. 运算符移到对应的括号后 (此处注意括号的变化)
    ( ( ( 5 20 ) + ( 1 3 ) * ) + 14 ) /

  3. 去掉括号

后缀表达式:5 20 + 1 3 * +14 /



2.后缀表达式求值

后缀表达式也叫逆波兰表达式,其求值过程可以用到来辅助存储。假定待求值的后缀表达式为:6 5 2 3 + 8 * + 3 + *,则其求值过程如下:

  1. 遍历表达式,遇到的数字首先放入栈中,此时栈如下所示:

在这里插入图片描述

  1. 接着读到“+”,则弹出3和2,执行3+2,计算结果等于5,并将5压入到栈中。
    在这里插入图片描述

  2. 读到8,将其直接放入栈中。
    在这里插入图片描述

  3. 读到 “ * ”,弹出8和5,执行8*5,并将结果40压入栈中。而后过程类似,读到“+”,将40和5弹出,将40+5的结果45压入栈…以此类推。最后求的值288。

猜你喜欢

转载自blog.csdn.net/weixin_40688217/article/details/93503496