通常情况下,我们看到的表达式的形式称为表达式的中缀形式:a+b*c-d+e。
为了将其转化为前缀和后缀的形式需要先对表达式进行预处理,因为表达式中优先级的设定(乘除大于加减)虽然是我们约定好的,但是机器却不能够像人类一样加以区分,所以需要我们先告诉他们。为此我们需要加上括号,区分优先级:((a + (b * c) - (d + e))。这样整个表达式的计算顺序就确定下来,括号的划分不是唯一的,但结果是一样的。
对于前缀表达式,顾名思义就是符号在操作数的前面,所以我们只需要将括号里的符号拿到括号的前面:- ( + (a *(bc)) + (de)),所以可以得到前缀表达式为:-+a*bc+de。
后缀表达式与此类似,需要将符号放到括号后面:((a(bc)*)+(de)+)-,去掉括号得到:abc*+de+-。
上面是中缀表达式转换为前后缀的过程,而前后缀转换为中缀的过程正好相反,在此就不多说了。