什么是后缀表示法?
在后缀表示法中,运算符出现在操作数之后,即运算符与操作数之间的运算符被取出并附加到操作数之后。
示例1 − 将 a ∗ d − (b + c) 转换为后缀形式。
解决方案
ad ∗ bc + −
示例2 − 将 a + (b ∗⊝ c) 转换为后缀形式。
解决方案
这里 ⊝ 表示一元减运算符。
a b c ⊝ ∗ +
示例3 − 使用栈实现将后缀表达式转换为中缀表达式
a d ∗ bc + −
解决方案
字符串符号 | 栈 |
---|---|
ad ∗ bc + − | |
A | A |
D | ad |
* | (a * d) |
B | (a * d)b |
C | (a * d)b c |
+ | (a ∗ d)(b + c) |
- | (a ∗ d)-(b + c) |
示例4 − 计算后缀表达式的值。
57 + 2 ∗ 3/
解决方案
可以使用栈来评估此表达式。每个符号可以按顺序插入,并且运算符可以应用于位于栈顶部的操作数及其旁边的操作数。
符号 | 栈 | 描述 |
---|---|---|
5 | 5 | |
7 | 5 7 | 5 + 7 |
+ | 12 | |
2 | 12 2 | |
* | 24 | 12 * 2 |
3 | 24 3 | |
/ | 8 | 24/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
广告