什么是后缀表示法?


在后缀表示法中,运算符出现在操作数之后,即运算符与操作数之间的运算符被取出并附加到操作数之后。

示例1 − 将 a ∗ d − (b + c) 转换为后缀形式。

解决方案

ad ∗ bc + −

示例2 − 将 a + (b ∗⊝ c) 转换为后缀形式。

解决方案

这里 ⊝ 表示一元减运算符。

a b c ⊝ ∗ +

示例3 − 使用栈实现将后缀表达式转换为中缀表达式

a d ∗ bc + −

解决方案

字符串符号
ad ∗ bc + −
AA
Dad
*(a * d)
B(a * d)b
C(a * d)b c
+(a ∗ d)(b + c)
-(a ∗ d)-(b + c)

示例4 − 计算后缀表达式的值。

57 + 2 ∗ 3/

解决方案

可以使用栈来评估此表达式。每个符号可以按顺序插入,并且运算符可以应用于位于栈顶部的操作数及其旁边的操作数。

符号描述
55
75 75 + 7
+12
212 2
*2412 * 2
324 3
/824/3

∴ 答案是 8。

控制语句中使用的后缀表示法

  • 跳转 − 跳转到标签 𝑙 可以用后缀表示法写成 −

                                         𝑙jump

  • jlt(如果小于则跳转) − e1 e2 𝑙 jlt 如果 e1 的值小于 e2,则跳转到标签。


  • jeqz(如果等于零则跳转) − e 𝑙 jeqz 如果 e 的值为零,则跳转到 𝑙。


示例5 − 将以下语句转换为后缀表示法。

if e then x else y

解决方案

If − else 语句可以写成

If e then

   x

else

𝑙1: y

𝑙2: exit

后缀表示法将是

示例6 − 将表达式转换为后缀表示法。

if a then if c + d then a + c else a * c else a + b.

解决方案

它可以写成

if a then

      if c + d then

            a + c

           else

                a * c

      𝑙1

      else

      𝑙2: a + b

      𝑙3: exit

更新于: 2021年11月3日

18K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告