写出表达式:A+B*(C-D)-E/F|G逆波兰,四元组表示,语法抽象树和DAG图表示
时间: 2024-02-06 17:11:30 浏览: 214
表达式 A+B*(C-D)-E/F|G 的逆波兰表达式为:
A B C D - * + E F / G | -
其中,每个操作数和运算符都是一个单独的元素。
四元组表示如下:
(1, A, _, _)
(2, B, _, _)
(3, C, _, _)
(4, D, _, _)
(5, -, C, D)
(6, *, B, 5)
(7, +, A, 6)
(8, E, _, _)
(9, F, _, _)
(10, /, E, F)
(11, |, 10, G)
其中第一列为序号,第二列为元素值,第三列为左操作数,第四列为右操作数。
语法抽象树的表示如下:
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_______
| |
A |
|
|
___|___
| |
+ |
/ \ |
/ \ |
* | |
/ \ | |
B - | |
/ \ / \
C D E F
|
|
G
```
DAG图的表示如下:
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_________
| |
A |
|
|
_____|_____
| |
B |
|
__|__
| |
C D
|
__|__
| |
- |
| | |
| | |
| | |
* + F
| | |
| | |
| | |
| | |
| | |
E / G
```
其中,每个节点表示一个操作数或运算符,箭头表示依赖关系。节点可以重复利用,例如图中的“-”节点就被多个运算使用。
阅读全文