码迷,mamicode.com
首页 > 其他好文 > 详细

表达式求值

时间:2019-05-26 11:06:59      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:逆波兰   遇到   code   后缀表达式求值   逆波兰式   需要   扫描   中缀转后缀   直接   

对一个中缀表达式求值分为两部分:

  1. 将中缀表达式转为后缀表达式
  2. 对后缀表达式求值

tip:波兰式是前缀表达式,逆波兰式是后缀表达式

中缀转后缀

利用栈实现,扫描输入的中缀表达式,大致思路:

  1. 遇到操作数,直接输出
  2. 遇到左括号,将其放入栈中
  3. 遇到右括号,将栈元素弹出并输出,直至遇到左括号
  4. 遇到其他操作符,如加减乘除,不断从栈中弹出比当前操作符优先级更高的元素,然后将当前操作符入栈。有一点需要注意,只有在遇到" ) "的情况下我们才弹出" ( ",其他情况我们都不会弹出" ( "
  5. 如果读到了输入的末尾,则将栈中所有元素弹出

例子

中缀表达式a + b*c + (d * e + f) * g,其转换成后缀表达式则为a b c * + d e * f + g * +。

对后缀求值

利用栈实现,扫描输入的后缀表达式,大致思路:

  1. 遇到操作数则入栈
  2. 遇到操作符则从栈中弹出两个元素进行运算,将结果入栈

最终栈里的元素就是结果值

表达式求值

标签:逆波兰   遇到   code   后缀表达式求值   逆波兰式   需要   扫描   中缀转后缀   直接   

原文地址:https://www.cnblogs.com/gizing/p/10925270.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!