前缀、后缀、中缀表达式

三种表达形式,分别为 前缀、后缀 、中缀 表达式。

前缀表达式:操作符写在操作数的前面,这种方法经常用在计算机上,特别是 编译器的设计。其特点是:从右往左扫描表达式,遇到数字就进栈,遇到操作符就就将将栈顶的两个数字出栈,并进行相应的操作运算,之后将运算结果再进栈。重复上面操作,直至扫描结束。

比如现在有 前缀表达式 : -*+ABC/D+EF 。具体过程:

1.先将 E 和 F 进栈,扫描到 + 号,将 E 和 F 出栈并相加得到 (E+F),再将它进栈。

2.将 D 进栈,扫描到 / 号 将 D 和 (E+F)出栈,并进行 D/(E+F)运算,然后把结果进栈。

3.将 A B C 进栈,现在栈顶两个元素是 A 和 B ,扫描到 + 号,将 A B 出栈,并且 进行 A+B 运算,再进栈。

4.扫描到 * 号,现在栈顶两个元素是(A+B)和 C 所以进行 (A+B)*C 运算,再进栈。

5扫描到 - 号,此时栈顶两个元素是 (A+B)*C 和 D/(E+F),出栈,进行(A+B)*C -D/(E+F)运算,再进栈。

6.扫描结束 所以运算结果是 (A+B)*C - D/(E+F)


中缀表达式:其实就是我们平时的算法表达式形式 比如上面的 (A+B)*C - D/(E+F) 就是中缀表达式。

后缀表达式:跟前缀表达式相反,它将数字写在操作符的前面。我们从左向右扫描即可。

例如 现在有 后缀表达式  AB+C*DEF+/-  。具体过程:

1.A 和 B 进栈,扫描到 + 号,A B出栈并且进行 A+B操作运算,然后再进栈。

2. C 进栈,扫描到 * 号,出栈,进行 (A+B)*C操作,再进栈。

3. 将D E F 进栈,扫描到 + 号 将 E 和 F出栈并且进行 E+F 操作,进栈。

4.扫描到 / 号 将 (E+F)和D出栈,进行 (E+F)/D 操作,再进栈

5.扫描到 - 号 ,将 (A+B)*C 和 (E+F)/D出栈,进行 (A+B)*C -(E+F)/D 运算,再进栈。

6. 扫描结束,所以结果是 (A+B)*C -(E+F)/D




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值