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

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

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

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

后缀表达式逐个入栈,栈初始为空。非操作符正常入栈,遇到操作符分先后从栈弹出两个操作数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+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值