Advertisement

高级实验 3-3.1 计算前缀表达式

阅读量:

算术表达式可采用前缀表示法、中缀表示法以及后缀表示法等多种形式。其中,前缀表达式的特征在于二元运算符位于两个操作数之前。例如2+3\ast (7-4)+8/4的前缀表达式是:\texttt{+} \, \texttt{+} \, \texttt{2} \, \texttt{\ast} \, \texttt{3} \, -\, \texttt{7}\, \texttt{4}\, /\,\texttt{8}\,\texttt{4}。请设计一个程序来计算该类特定操作数及其运算结果的值

输入格式:

以一行的形式提供不超过30个字符的前缀表达式,并仅包含加减乘除以及相应的数值;所有数值与算符之间均需使用空格分隔开的对象

输出格式:

输出前缀表达式的运算结果,保留小数点后1位,或错误信息ERROR。

输入样例:

复制代码
    + + 2 * 3 - 7 4 / 8 4

输出样例:

13.0

思路:

前缀表达式(也称 polish 表达式)是从左向右遍历的吗?不不不,在这里它其实是从前向后遍历整个字符串。具体来说,在构建前缀表达式的算法中有一个关键步骤就是将每个操作符与其对应的两个操作数配对起来。每当读取到一个运算符时,则需从当前扫描的位置向前查找其对应的两个操作数,并按照一定的规则进行结合运算。整个过程类似于逆向思

全部评论 (0)

还没有任何评论哟~