陈斌彬的技术博客

Stay foolish,stay hungry

逆波兰式(后缀表达式)转成波兰式(中缀表达式)notes

img

a进栈,b进栈,遇到+,a和b弹出,得到a+b, (a+b)进栈,-进栈,弹出(a+b),得到-(a+b),-(a+b)进栈,c进栈,*进栈,弹出-(a+b)和c,得到-(a+b)*c,然后-(a+b)*c进栈,d进栈,-进栈,弹出-(a+b)*c和d,得到-(a+b)*c-d

波兰式又称中缀式

逆波兰式又称后缀式

还有一个前缀式

中缀式:

根据算符间的优先关系来确定运算的次序,此外,还应顾及括号规则

如 

(A+B)*(C+D) = 运算法则符合我们正常的运算规律 后缀式是由中缀式所得 如 AB+CD+*这个例子: 运算法则,从从左到右依次进栈,遇见字母入栈,遇见运算符,将前两个字母弹出,进行运算符计算后,将值在入栈,重复此过程:根据后缀表达式求中缀表达式 A入栈,B入栈,遇到+,A、B弹出,(A+B)入栈,C入栈,D入栈,遇见+,C、D弹出,(C+D)入栈,遇见*,(A+B)、(C+D)弹出,(A+B)*(C+D)入栈,最终栈里面的只有一个元素,该元素的值就为计算结果,即中缀表达式 前缀式:就是后缀式的逆序 即*+DC+BA 从右到左依次入栈,只是跟后缀式入栈方向相反,过程相同