题目描述
给定一个前缀表达式,计算它的结果。
输入格式
一行若干段用空格分开的整数和四则运算符号,表示前缀表达式。
输出格式
一行一个数字,表示表达式的结果。
当你的答案与正确答案的相对或绝对误差在 以内时算作正确。
样例输入
* + 1 2 + 3 4
样例输出
21
数据范围
输入的数字大小不超过 ,数字和符号的个数不超过 。 方法提示: 回到这个题,如果使用栈解决这个问题,只需要以下三步即可: 1、对前缀表达式进行从右至左依次扫描,当遇到数字时,将数字压入堆栈,遇到运算符时,弹出 栈顶的两个数。
2、用运算符对它们做相应的计算(栈顶元素 运算符 次顶元素),并将结果入栈。
3、重复上述过程直到表达式最左端,最后运算得出的值即为表达式的结果。 例如,对于前缀表达式:- × + 2 3 4 5
1、从右至左扫描,将5、4、3、2压入堆栈。
2、遇到 + 运算符,因此弹出 2 和 3( 2 为栈顶元素,3 为次顶元素,注意与后缀表达式做比较), 计算出 2 + 3 的值,得 5,再将 5 入栈。
3、接下来是 × 运算符,因此弹出 5 和 4 ,计算出 5 × 4 = 20,将 20 入栈。
4、最后是 - 运算符,计算出 20 - 5 的值,即 15,由此得出最终计算结果。