表达式求值
Posted gizing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了表达式求值相关的知识,希望对你有一定的参考价值。
对一个中缀表达式求值分为两部分:
- 将中缀表达式转为后缀表达式
- 对后缀表达式求值
中缀转后缀
利用栈实现,扫描输入的中缀表达式,大致思路:
- 遇到操作数,直接输出
- 遇到左括号,将其放入栈中
- 遇到右括号,将栈元素弹出并输出,直至遇到左括号
- 遇到其他操作符,如加减乘除,不断从栈中弹出比当前操作符优先级更高的元素,然后将当前操作符入栈。有一点需要注意,只有在遇到" ) "的情况下我们才弹出" ( ",其他情况我们都不会弹出" ( "
- 如果读到了输入的末尾,则将栈中所有元素弹出
例子
中缀表达式a + b*c + (d * e + f) * g,其转换成后缀表达式则为a b c * + d e * f + g * +。
对后缀求值
利用栈实现,扫描输入的后缀表达式,大致思路:
- 遇到操作数则入栈
- 遇到操作符则从栈中弹出两个元素进行运算,将结果入栈
最终栈里的元素就是结果值
以上是关于表达式求值的主要内容,如果未能解决你的问题,请参考以下文章