软件工程编译原理编译原理

波兰法与逆波兰法

2018-03-10  本文已影响8人  c8a73a886522

身为初学者,能力有限,知识尚少,如有纰漏,还望海涵。

  对于表达式,通常有三种表示方法,前、中、后缀表示法。我们日常使用的数学算式就是中缀表示法。例:1+5*10-10/2

码文不易,希望支持,谢谢->支持原创

 波兰表示法

  波兰表示法(Polish notation,或波兰记法),是一种逻辑、算术和代数表示方法,其特点是操作符置于操作数的前面,因此也称做前缀表示法。波兰表示法——维基百科

 举个例子

一个算式: $ 1+5*10-10/2 $
用波兰法表示就是: $ - + 1 * 5 , 10 ,/, 10, 2 $
是不是有点反人类,有人就要问了,这玩意看着费劲,为啥要这么写?
答案就是,虽然这玩意人看着费劲,但是更便于机器使用。

 规则

那么如何去运算波兰表示法呢?
通过学习,我的总结是

  1. 在前面的符号后运算,后面的符号先运算。
  2. 每一步运算都是符号和后面两个数的运算。
  3. 运算之后把原来的算式替换成结果,继续之后的运算。

又如何把中缀算式转换成波兰表示法呢?

  1. 把操作数提出来,按照原顺序摆好。
  2. 根据运算步骤,在两操作数前加符号。如果已经有符号,则后加的在前面。

经过转换之后,不再需要括号。

 逆波兰表示法

  逆波兰表示法(Reverse Polish notation,RPN,或逆波兰记法),是一种是由波兰数学家扬·武卡谢维奇1920年引入的数学表达式方式,在逆波兰记法中,所有操作符置于操作数的后面,因此也被称为后缀表示法。逆波兰记法不需要括号来标识操作符的优先级。逆波兰表示法——维基百科

 举个例子

一个算式: $ 1+510-10/2 $
用波兰法表示就是: $ 1 , 5 , 10
+, 10 , 2 ,/- $
是不是有点反人类,有人就要问了,这玩意看着费劲,为啥要这么写?
答案就是,虽然这玩意人看着费劲,但是更便于机器使用。

 规则

那么如何去运算逆波兰表示法呢?
通过学习,我的总结是

  1. 在前面的符号先运算,后面的符号后运算。
  2. 每一步运算都是符号和前面两个数的运算。
  3. 运算之后把原来的算式替换成结果,继续之后的运算。

又如何把中缀算式转换成波兰表示法呢?

  1. 把操作数提出来,按照原顺序摆好。
  2. 根据运算步骤,在两操作数后加符号。如果已经有符号,则后加的在后面。

经过转换之后,不再需要括号。

支持原创

码文不易,希望支持,谢谢->支持原创

微信支付 微信支付

再次感谢,大家对本人的支持。

上一篇下一篇

猜你喜欢

热点阅读