Java 后缀表达式的计算过程和中缀转后缀的过程图解

1、 后缀表达式

后缀表达式又叫逆波兰式,如下:

      4.99*1.06+5.99+6.99*1.06的逆波兰式为:
      4.99 1.06 * 5.99+6.99 1.06 * +

逆波兰式的计算过程是:

将字符依次入栈,直到遇到操作符,遇到操作符后弹出两个字符,计算出结果,然后将结果推入栈中,继续遍历后缀表达式,重复前面的操作。
在这里插入图片描述

中缀表达式转后缀表达式的详细过程

例如   中缀表达式 a+b*c+(d*e+f)*g
       后缀表达式 abc*+de*f+g*+

首先建立一个空栈,这个栈只允许入操作符+、-、*、/、(、)等,按照括号优先级最高;乘除次之;+、-最后;压入栈时,遇到栈中操作符优先级比当前要入栈的操作符低的,当前操作符直接入栈;如果栈中操作符优先级高于或等于当前要入栈的操作符的优先级,则先将栈中的优先级高于或等于当前操作符的操作符出栈并输出,当前操作符再入栈,如果入栈了一个左括号,在右括号出现前不用管它(在栈内左括号优先级最低),左括号入栈后右括号出现前入栈的其他操作符规则如前(左括号前面的先不管),如果当前操作符是一个右括号(就意味着前面已经入栈了一个左括号,右括号并不入栈,可以当做一个判定标识)那么一次出栈直到左括号出栈为止(但是括号不输出,相当于出栈后就丢了一样)

相同等级的运算符,栈内高于栈外,栈外的左括号优先级最高,栈内的左括号优先级最低,栈外的右括号优先级最低(低到和栈内的左括号相同)

遍历中缀表达式时,遍历到字符时直接输出,遍历到操作符则按上面规则入栈

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

中缀转后缀表达式实现的代码。

猜你喜欢

转载自blog.csdn.net/QQ2899349953/article/details/82809521