返回目录:
Chilan Yu:《数据结构》目录链接zhuanlan.zhihu.com5.4.1 广义表的概念
广义表也是线性表的一种推广。
广义表也是n个数据元素(d1,d2,d3,…,dn)的有限序列,但不同的是,广义表中的di既可以是单个元素,还可以是一个广义表,通常记作:GL=(d1,d2,d3,…,dn)。GL是广义表的名字,通常用大写字母表示。
n是广义表的长度。若 di是一个广义表,则称di是广义表GL的子表。
在GL中, d1是GL的表头,其余部分组成的表(d2,d3,…,dn)称为GL的表尾。由此可见,广义表的定义是递归定义的。
例:
- D =( ):空表;其长度为零。
- A = (a,(b,c)):表长度为2的广义表,其中第一个元素是单个数据a,第二个元素是一个子表(b,c)。
- B = (A,A,D):长度为3的广义表,其前两个元素为表A,第三个元素为空表D。
- C =(a,C):长度为2递归定义的广义表,C相当于无穷表C = (a,(a,(a,(…) ) ) )。
- head(A) = a:表A的表头是a。
- tail(A) = ( (b,c) ):表A的表尾是( (b,c) ) ,广义表的表尾一定是一个表。
5.4.2 广义表例题
例:求广义表表头与表尾。
已知广义表 L = ( (x,y,z),a,(u,t,w) ),求head(head(tail(tail(L))))的结果。
解:
(1)tail(L) = (a,(u,t,w))
(2)tail(tail(L)) = ((u,t,w))
(3)head(tail(tail(L))) = (u,t,w)
(4)head(head(tail(tail(L)))) = u
所以head(head(tail(tail(L)))) = u。