前缀,中缀,后缀表达式转换之趣谈

首先前缀,中缀,后缀表达式的定义不予赘述,教材,网络有详解,从其形式上亦容易看出(所谓前,后,不过符号的位置罢了)。这里主要关注其转换。

  首先举几个简单的例子:

  中缀表达式 a+b           那么它的前缀表达式就应该是 +ab      后缀表达式是 ab+

  现在我做几个简单的转换:以中缀表达式a+b为例,a 等于 主语,+ 等于 谓语, b 等于 宾语

  那么  a+b则相当于 主语 谓语 宾语 (亦为世界上语言最常见的语序结构)。

  其前缀表达式+ab则变成了 谓语 主语 宾语 (这种语序代表是圣经希伯来语,当然其他语言中亦存在这种特殊语序。)

  起后缀表达式ab+则变成了 主语 宾语 谓语 (这种像日语,韩语等)

  然后从简单的句子推向复杂的句子:

  以中缀表达式转前缀表达式和后缀表达式为例,转换时遵循以下几个原则

  1.从优先级高的运算符开始,连同左右两个数字(要是双目运算符,如果是单目无非缺少主语或者宾语作相应变化,显示不变。)

  2.化完的一个短句(即以上所列的基本句型),将看作一个整体(这种感觉如同从句一样),或看作一个单个数字,继续放回原句,然后转化。(如A*B*C转后缀表达式,A*B化为AB*之后放回成AB**C,此时AB*看作一个字母,再化为AB*C*)

  3.优先级相同的情况下,从左至右化。主要是要保持每个短句中主语和宾语的位置不变。

  例:1 + (( 2 + 3)* 4 ) – 5转化为前缀表达式。

  括号中的2+3优先级最高变为+23,总体为1+(+23*4)-5,再化+23*4为*+234,总体为1+*+234-5,再化为+1*+234-5,最后化为-+1*+2345。

  同理,从以上不难得出前缀表达式,后缀表达式转中缀的方法。

  这种方式相对栈的方法而言更易手工运算,运算符左右两边的顺序不会弄错。总体而言,似乎更像树的方法,只是以“主谓宾”代替“左根右”,个人感觉更加直观,并且在这种文字游戏之中窥见语言学与计算机学中某些有趣的联系。

转载请标明出处,原文地址:https://blog.csdn.net/come_from_pluto/article/details/85171308

猜你喜欢

转载自blog.csdn.net/come_from_pluto/article/details/85171308