关于后缀表达式的转换

我们一般人书写一个表达式,例如:2*3+6-5/9,这种书写被称之为中缀表达式,但在计算机中则不是用中缀表达式的,往往使用的是后缀表达式,后缀表达式更符合计算机的特性,所以效率也就会比中缀表达式的效率高很多,我们今天就来说一说,怎么把中缀表达式转换成后缀表达式。
我们先给出一个例题供大家来参考:
X=A+B*(C-D)/E

说到后缀表达式就得从入栈出栈开始说起,当数据全部写入到栈(数组)之后,当碰到一个运算符的时候,若碰到比这个运算符优先级更低得运算符的时候,先让那些优先级低得运算符出栈,然后让这个优先级最高的运算符入栈,以此类推,直到运算符全部正确入栈。
碰到此类题目,最好的办法就是根据优先级加括号,接下来由我演示一下:
解:
   1.先一层一层的加括号
    X=(A +( (B*(C-D))/E))
然后就是从最里面开始往外面去括号,括号的意思是:左括号表示入栈,右括号表示出栈。去掉括号后数据向左靠齐,所以第一次去掉括号之后式子就是:X=(A+((B*(CD-))/E)),继续,X=(A+((BCD-*)/E));刚才数据都是在括号左边,所以都是向左靠齐,接下来的E在括号右边,去掉括号之后应加在原式的后面,X=(A+(BCD-*E/)),一样的,继续X=(ABCD-*E/+),最后把等号也变过来,式子的最终结果也就是XABCD-*E/+=,也就得到了我们的后缀表达式。
  看完之后是不是有一种茅塞顿开的感觉呢?利用这种办法,既快速又准确,如果觉得刚才的题目过于简单,接下来这一道会稍微难一点,式子也会稍微长一些,但还是用刚才所说的技巧,万变不离其宗。请往下面看:
a+b*c+(d*e+f)*g

解题思路:第一步还是老规矩,加括号,只是这次的括号有些多,千万别加错了哦。(a+(b*c)+(((d*e)+f)*g))
这次就不再那么详细的讲了,都是同样的套路,(a+b*c+(de*f+g*))—–>(abc*+de*f+g*+ ),不过这次一定要仔细,加法是从左到右依次执行的,先变换后面的乘法,变换完了之后3个直接相加,再一变换就变成了我们想要的结果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值