什么是后缀表达式
一般我们常见的表达式为中缀表达式,比如2+3*4这样的形式,操作符在两个操作数之间。那么后缀表达式,显而易见就是操作符在操作数之后的形式了,比如2 3 4 * +。后缀表达式也叫做逆波兰表达式,传送门。
为什么要用后缀表达式
很直观的一个原因就是,后缀表达式不用考虑运算符优先级、不用考虑括号等,可以顺序计算,可以很方便的用程序实现。
准备工作
一般人们输入的都是中缀表达式,如果要用后缀表达式来计算的话,我们首先应该把中缀表达式转换成后缀表达式。
基本条件
l 为了描述简单起见,我们假设表达式只包含+-*/四种运算,包括(),支持负号。运算符优先级*=/ > +=- > (。
l 表达式中的操作数提取,很简单不深入讲解,以a,b,c等字符代替表达式中的操作数。
转换步骤
1. 创建一个操作符栈,一个字符串(用来放后缀表达式)
2. 依次遍历表达式中的字符,判断是字符还是操作数
l 如果是操作数,则直接放入后缀表达式中。
l 如果是操作符,则要判断是不是括号、或者其它操作符
1. 如果是普通操作符,能直接放入操作符栈中的条件:栈为空或者当前操作符优先级比栈顶元素高。如果当前元素没有栈顶元素高,则栈顶