中缀表达式算法实现&中缀表达式转后缀表达式

中缀表达式,即运算符在操作数中间。

计算中缀表达式时,逐个扫描表达式。

扫描时存入两个栈,操作数栈,和运算符栈。

例如   3*2^(4+2*2-1*3)-5 

扫描表达式。

操作数栈以 栈$表示,运算符栈以 栈¥表示。

扫描开始:

栈$进3  ,栈¥进*  , 栈$进2 ,栈¥进^ ,栈¥进(,栈$进4 , 栈¥进+ , 栈 $进2 , 栈¥进*  ,栈$进2,

接下来由于 - 减号运算符优先级低于 * ,所以 *出栈进行运算, 操作数也出栈参与运算,完成后将结果进栈$。   此处* 和 ,+均出栈,并将运算符 -进栈 

栈$进1 , 栈¥进* , 栈$进3 

接下来由于)运算符低于任意运算符(匹配到‘(’为止 ),将 - 出栈 。(出栈 。

再接下来由于 - 号 优先级低于 ^与 *, 则将这两个运算符出栈。 最后进行减号运算。


中缀表达式变后缀表达式:

过程与中缀计算类似 。只不过从操作符栈中出栈并进行运算 变成了 将操作符进入操作数栈。

例如: 中缀表达式为,a+b*c+(d*e+f)*g  

后缀表达式为 , abc*+de*f+g*+


前缀表达式和后缀表达式分别称为波兰表达式和逆波兰表达式。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值