逆波兰表达式(简介) ##一 问题描述 解析并计算 9+(3-1)*3+10/2 首先,以上的公式对于人来说是很好解析计算的。但是对于计算机来说就不是那么友好了。后来波兰的逻辑学家创建了一种后缀表达法类解决这个问题。这位同学的表示方法被称为逆波兰表达式。 ###1 后缀表达式: 简单介绍下什么叫做中缀表达式和后缀表达式。 中缀表达式:平时的计算表达式为中缀表达式,类似3-1这样的平时我们书写的格式。比如上面的9+(3-1)*3+10/2。 后缀表达式:将计算的操作数放在前面,最后才放置操作符。称为后缀表达式。比如3-1的后缀表达式为 3,1, -。 ###2 后缀表达式的转换 比如将上面表达式的中缀表达式转为后缀表达式: [9,+,(,3,-,1,)*,3,+,10,/,2] 首先(3-1)转换为 [3,1,-] 首先(3-1)*3 需要转换为 [3,1,-,3,*] 然后 9 + (3-1)*3 转换为 [9,3,1,-,3,*,+] 继续如此转换,得到最终的后缀表达式如下: [9,3,1,-,3,*,+,10,2,/,+ ] ###2 后缀表达式的计算 已经将中缀表达式转化为后缀表达式后,进行计算结果。 我们可以没遇到一个符号,就先计算符号前面的结果,然后将值放回到表达式中: 如下: [9,2,3,*,+,10,2,/,+ ] 遇到符号*,计算 2,3,* =6 [9,6,+,10,2,/,+] 遇到符号+,计算9,6,+=15 [15,10,2,/,+] 遇到符号/,计算10,2,/ = 5 [15,5,+] 遇到符号+,计算15,5,+ =20 [20] 最终结果