看题目有点深奥的样子,然而弄明白之后也就那么回事。 (´-ι_-`)虽然我刚开始根本没弄懂……
中缀表达式
中缀表达式(或中缀记法)是一个通用的算术或逻辑公式表示方法, 操作符是以中缀形式处于操作数的中间。其实说白了,我们平时写的式子都是中缀表达式,就是说运算符位于要计算的两个数中间。中缀表达式不容易被计算机解析,但仍被许多程序语言使用,因为它符合人们的普遍用法。
前缀表达式和后缀表达式
前缀表达式是一种没有括号的算术表达式,其将运算符写在前面,操作数写在后面。为纪念其发明者波兰数学家Jan Lukasiewicz,前缀表达式也称为“波兰式”。
后缀表达式是运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行。
计算方法:
这里我给出一个中缀表达式:
a
+
b
∗
c
−
(
d
+
e
)
a+b*c-(d+e)
a+b∗c−(d+e)
第一步:按照运算符的优先级对所有的运算单位加括号
式子变成了:
(
(
a
+
(
b
∗
c
)
)
−
(
d
+
e
)
)
((a+(b*c))-(d+e))
((a+(b∗c))−(d+e))
第二步:转换前缀与后缀表达式
前缀:把运算符号移动到对应的括号前面
则变成了:
−
(
+
(
a
∗
(
b
c
)
)
+
(
d
e
)
)
-( +(a *(bc)) +(de))
−(+(a∗(bc))+(de))
把括号去掉:
−
+
a
∗
b
c
+
d
e
-+a*bc+de
−+a∗bc+de 前缀式子出现
后缀:把运算符号移动到对应的括号后面
则变成了:
(
(
a
(
b
c
)
∗
)
+
(
d
e
)
+
)
−
((a(bc)* )+ (de)+ )-
((a(bc)∗)+(de)+)−
把括号去掉:$abc*+de± $后缀式子出现
发现没有,前缀式,后缀式是不需要用括号来进行优先级的确定的,便于计算机解析。。