逆波兰表达式(后缀表达式)是一种不需要括号就能明确表示运算优先级的数学表达式表示方法。解题的核心思路是使用栈数据结构来模拟计算过程。
算法流程:
逆波兰表达式可以在避免使用括号的情况下,完成表达式的有优先级的运算。
逆波兰表达式由操作数 (operand) 和运算符 (operator) 构成,不使用括号,即可表示带优先级的运算关系。
例如:2,1,+,3,∗
该算式转化为常见的中缀算术表达式为:((2+1)∗3)=9
一般在计算机中,使用栈操作进行逆波兰表达式的计算。
遇到操作数就入栈,遇到运算符,就对当前栈顶元素进行相应的一元或者二元运算。
具体求解过程如下:
1.声明一个操作数栈用来存放操作数,按顺序遍历逆波兰表达式的字符;
2.如果当前字符是操作数,则直接入栈;
3.如果当前字符是操作符,则从栈中取出 2 个操作数,并按照当前操作符进行计算,将计算结果重新入栈。
4.最后,返回操作数栈中唯一的一个值,即为逆波兰表达式的求值结果。
说明:
1.有效的算符包括 +、−、∗、/ 。
2.整数除法只保留整数部分。
3.给定逆波兰表达式总是有效的。
输入一行,包含有效的逆波兰表达式,每个元素之间使用逗号 (,) 分隔,简化表达式解析。
数字元素范围 0<=num<=100 。
符号元素包括 +、−、∗、/ 。
输出一行,包含逆波兰表达式计算结果。
输入
2,1,+,3,*
输出
9
输入
4,13,5,/,+
输出
6