2021-04-16

2021-04-16  本文已影响0人  hananan

关于:前序、中序、后序表达式

优先级:每个运算符都有一个优先级,高优先级的运算符优先低优先级的运算符;

唯一能够改变运算顺序的就是括号

乘法和除法的优先级高于加法和减法;

A + B * C + D 可以被写成 ((A + (B * C ))+ D)A + B +  C + D 可以被写成(((A + B) + C ) + D);这种写法称为完全括号表达式

中序表达式:B * C;运算符在操作数中间;

前序表达式:* BC;运算符在操作数前边;

后序表达式:BC *;运算符在操作数后边;

因此 A + B * C 可以写成:

前序表达式:+ A * BC;* 出现在BC之前,代表他的优先级高;

后续表达式:ABC * +;* 紧跟着BC出现,代表他的优先级高;

(A + B) *  C 可以写成:

前序表达式:* + ABC; + 出现在BC之前,代表他的优先级高;

后续表达式:AB + C *;+紧跟BC出现,代表他的优先级高;

以下是个例子

中序表达式        前序表达式        后序表达式

A + B * C + D        + + A * BCD        ABC * + D +

转化

使用完全括号表达式

A + B * C  ==> ( A + ( B * C))

转化为后序表达式,只需要将(B * C)中 * 运算符移动到右括号的位置,并去掉对应的左括号,+也移动到对应右括号并去掉对应左括号即可;

转化为前序表达式,只需要将(B * C) 中 * 运算符移动到左括号的位置,并去掉对应的右括号,+ 也移动到对应左括号并去掉对应右括号即可;

如下图所示

例如

 (A + B) * C - (D - E) * (F + G)  ==> (((A + B) * C) - ((D - E) * (F + G)))

对应

前序表达式- * + ABC * - DE + FG

后序表达式AB + C * DE - FG + * -

上一篇下一篇

猜你喜欢

热点阅读