Bootstrap

中缀表达式转换为后缀表达式可编程法和手动操作法

中缀表达式转后缀表达式在本文中分为两种方法:

  • 手动转换:可以使用加括号法,二叉树法
  • 可编程法:维护一个运算符优先级表

后缀表达式转中缀表达式可以用栈

后缀表达式逐个入栈,栈初始为空。非操作符正常入栈,遇到操作符分先后从栈弹出两个操作数A和B(A先弹出),假设操作符为"&",则得到中缀表达式为B&A,再将B&A作为操作数入栈,如此往复。


中缀转后缀

手动转换:

1、括号法:

(1)在中缀表达式中,按照运算符的优先级对运算符所包含的运算单元加括号。比如 a+b*c 加括号后为:(a+(b/c))。
(2)把运算符移动到其对应括号的后方。如:(a(b/c))+
(3)把括号去掉,得到后缀式子。如:abc/+

注:若将运算符移动到括号前面,得到的将是前缀表达式

2、二叉树法

我们容易将中缀表达式转换为一个二叉树,而后序遍历此二叉树将得到后缀表达式

可编码法

图源王道考研数据结构
注:图源王道考研数据结构

则相应的后缀表达式为:ab+acd+e/f-*-g+

;