首页 > 试题广场 >

中缀表达式转后缀表达式

[问答题]

中缀表达式转后缀表达式

也可以使用加括号去括号的方法。
比如上文A+B*(C-D)-E/F可以写成:
(((A+(B*(C-D)))-(E/F)),将将运算符移到相对应括号的后面:
(((A(B(CD)-)*)+(EF)/))-
去掉括号为:
ABCD-*+EF/-
发表于 2019-09-14 15:11:42 回复(0)

中缀表达式:

后缀表达式

算法思想

  • 从左到右开始扫描中缀表达式
  • 遇到数字时,加入后缀表达式
  • 遇到运算符时:
    a.若为'(',入栈
    b.若为')',则依次将栈中的运算符加入到后缀表达式中,直到出现'('为止,从栈中删除'('
    c.若为除括号外的其它运算符,当优先级高于除'('以外的栈顶运算符时,直接入栈;否则从栈顶开始,依次弹出比当前处理的运算符优先级高和优先级相等的运算符,直到出现一个比它优先级低或者遇到了一个左括号为止。
编辑于 2019-05-30 20:59:13 回复(0)