什麼是字尾表示法?
在後綴表示法中,運算子出現在運算元之後,即運算子與運算元之間的運算子被取出並附加到運算元之後。

示例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

廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP