Java-Stack实现中序表达式求值

中序表达式:对人而言是很直观的(我们平时计算时接触最多的表达式),但计算机处理起来比较麻烦(括号、优先级之类的),前序和后序表达式中没有括号,而且在计算中只需单向扫描,不需要考虑运算符的优先级。如2+3*4+5。

前序表达式:又称为前缀表达式,不含括号的算术表达式,而且它是将运算符写在前面,操作数写在后面的表达式,例如:"+ 2 + * 3 4  5",也称为“波兰式”。它运算时需要注意是从右往左结合,也就是运算符的右侧的两个数字进行运算, 因为'+' 比'*'优先级低, 此时先计算3*4,表达式变为"+ 2 + 12  5", 再将  12 + 5, 表达式变为"+ 2 17",最终得结果19。

后序表达式:与前序表达式扫描方式正好相反,例如:"2 3 4 * 5 + + ",它计算时是按从左往右结合,运算符左侧的两个数字进行计算,遇到第一个’*',计算 3*4,表达式变为"2 12 + 5 +", 在计算2 + 12,表达式变为"14 5 +",最终得到结果19。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值