广义表L(a,(a,b),e,((i,j),d,k))的长度是?,深度是?
时间: 2023-10-15 07:02:31 浏览: 68
广义表L(a,(a,b),e,((i,j),d,k))的长度为7,深度为3。
其中,广义表的长度是指其中元素的总个数,而深度是指广义表嵌套的层数。在这个广义表中,共有7个元素,因此长度为7。同时,该广义表嵌套了3层,即最外层的元素中包含了一个长度为2的子表,子表中又包含了一个元素和一个长度为3的子表,子表中还包含了两个元素。因此,深度为3。
相关问题
一个广 义表是(a, (a, b),d,e,(a, (i, j), k)),请画出该广义表的链式存储结构。
### 回答1:
链式存储结构的图示如下:
```
+---+ +---+ +---+ +---+ +---+
| a |---->| |---->| |---->| d |---->| e |
+---+ +---+ +---+ +---+ +---+
| |
| |
v v
+---+ +---+
| a |---->| |
+---+ +---+
| |
v |
+---+ +---+ +---+
| b |---->| |---->| |
+---+ +---+ +---+
| |
v v
+---+ +---+
| i | | j |
+---+ +---+
| |
v |
+---+ +---+
| k | | |
+---+ +---+
```
其中,每个节点代表一个元素,箭头表示一个节点指向另一个节点。每个节点包含两个指针,分别指向该节点的第一个子节点和下一个兄弟节点。例如,节点a的第一个子节点是节点a,下一个兄弟节点是节点d。节点b没有子节点,下一个兄弟节点是节点i。
### 回答2:
广义表可以用链式存储结构表示,其中每个节点有两个指针,一个指向下一个元素,另一个指向子广义表。
对于给定的广义表(a, (a, b),d,e,(a, (i, j), k)),可以使用链式存储结构如下表示:
首先,我们创建一个头结点,该节点不存放任何元素,只用来指向第一个元素。
头结点 -> (a) -> ((a) -> (b)) -> (d) -> (e) -> ((a) -> ((i) -> (j))) -> (k) -> NULL
头结点指向第一个元素a,a指向下一个元素((a) -> (b)),((a) -> (b))又指向下一个元素d,以此类推。元素d,e和k都不是广义表,所以它们的指针为空。只有元素((a) -> ((i) -> (j)))是一个广义表,它可以继续展开。
((a) -> ((i) -> (j))) -> (i) -> (j) -> NULL
在链式存储结构中,我们使用指针来连接每个元素或广义表。每个节点包含两个指针,一个指向下一个节点,另一个指向子广义表的头结点。通过不断遍历指针,我们可以访问到广义表中的每个元素或广义表。
### 回答3:
广义表是一种特殊的线性表,它可以包含多个元素,每个元素可以是原子元素,也可以是广义表。在链式存储结构中,我们使用链表的形式来表示广义表。对于给定的广义表(a, (a, b), d, e, (a, (i, j), k)),可以将其链式存储结构画出如下:
|---------------|
| data |
|---------------|
| link ______|-|
|---------------| |
| data | |
|---------------| |
| link __|--| |
|---------------| |
| data | |
|---------------| |
| link ____|--| | |---------------|
------>|---------------|-|-------> | data |
| data | | |---------------|
|---------------| | | link ______|-|
| link ______|--|-------|---------------|
|---------------| | | data |
| data | | |---------------|
|---------------| | | link __|--|
| link ______|--|-------|---------------|
|---------------| | | data |
| data | | |---------------|
|---------------| | | link ___|--|
-------| link ______|--|-------|---------------|
|---------------| |
| data | |
|---------------|-|
| link ___|--|
|---------------|
其中,箭头表示链表指针,data表示当前节点的数据,link表示指向下一个节点的指针。
广义表tail(a,(b,c))操作
广义表tail(a,(b,c))操作表示从广义表a中取出除第一个元素外的所有元素,并将第一个元素作为新的广义表的第一个元素,然后将新的广义表作为一个元素插入到一个新的广义表中,该广义表的第一个元素为b,第二个元素为c。