前中后缀表达式

前缀表达式以及后缀表达式的出现是为了让计算机的运算更加简便。因为计算机需要对中缀表达式进行优先级运算。

注:无论何种表达式,其三种表达式的字母顺序永远相同

中缀表达式->前/后缀表达式

前缀

思想:按照优先级顺序将操作数成对取出,注意运算符在前,操作数在后。

例:中缀表达式 a + ( b + c ) ∗ d a + (b + c) * d a+(b+c)d

优先级:(b+c) > *d > a+

+bc 式子①
按照顺序取出式子①和*d,得到表达式:
+bc * d

+bc * d 式子②
按照顺序取出式子②和a+,得到最终表达式:
+ a ∗ + b c d +a * + bc d +a+bcd

后缀

思想:按照优先级顺序将操作数成对取出,注意操作数在前,运算符在后。

例:中缀表达式 a + ( b + c ) ∗ d a + (b + c) * d a+(b+c)d

优先级:(b+c) > *d > a+

bc+ 式子①
按照顺序取出式子①和*d,得到表达式:
b c + d *

b c + d * 式子②
按照顺序取出式子②和a+,得到最终表达式:
a b c + d ∗ + a b c + d * + abc+d+


前/后缀表达式->中缀表达式

前缀

按照右->左的顺序入栈
遇到运算符,按照左->右的顺序出栈,再将转换后的表达式入栈

例:前缀表达式 + a ∗ + b c d +a * + bc d +a+bcd

  1. 入栈:d c b
  2. 遇到操作符+,弹出bc 得到式子①b+c 将式子①入栈
    此时栈内元素:d ①
  3. 遇到操作符*,弹出d与① 得到式子②(b+c)*d 将式子②入栈
    此时栈内元素:②
  4. 入栈:② a
  5. 遇到操作符+,弹出②与a 得到最终表达式: a + ( b + c ) ∗ d a+(b+c)*d a+(b+c)d

后缀

按照左->右的顺序入栈
遇到运算符,按照右->左的顺序出栈,再将转换后的表达式入栈

例:后缀表达式 a b c + d ∗ + a b c + d * + abc+d+

  1. 入栈:a b c
  2. 遇到操作符+,弹出bc 得到式子①b+c 将式子①入栈
    此时栈内元素:a ①
  3. 入栈:a ① d
  4. 遇到操作符*,弹出d与① 得到式子②(b+c)*d 将式子②入栈
    此时栈内元素:a ②
  5. 遇到操作符+,弹出②与a 得到最终表达式: a + ( b + c ) ∗ d a+(b+c)*d a+(b+c)d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值