广义表
广义表通常记作:LS=(a1,a2,...an)
其中:LS为表名,n为表的长度,每一个ai为表的元素
习惯上,一般用大写字母表示广义表,小写字母表示原子
表头:若LS非空(n>=1),则其第一个元素a1就是表头
记作head(LS)= a1 注:表头可以是原子,也可以是字表
表尾:除表头之外的其他元素组成的表
记作tail(LS)=(a2,...,an)
注:表尾不是最后一个元素,而是一个字表
例: (1) A=() 空表,长度为0
(2) B=(()) 长度为1,表头表尾均为()
(3) C=(a,(b,c)) 长度为2,由原子a和字表(b,c)构成
表头为a,表尾为((b,c))
(4) D=(x,y,z) 长度为3,每一项都是原子。
表头为x,表尾为(y,z)
(5) E?(C,D) 长度为2,每一项都是子表
表头为C,表尾为(D)
(6) F=(a,F) 长度为2,第一项为原子,第二项为他本身
表头为a,表尾为(F)
F=(a,(a,(a,...)))
广义表的性质
(1) 广义表中的数据元素有相对次序;一个直接前驱和一个直接后继
(2) 广义表的长度定义为最外层所包含元素的个数;
如:C=(a,(b,c))是长度为2的广义表
(3) 广义表的深度定义为该广义表展开后所包含括号的重数
A=(b,c)的深度为1,B=(A,d)的深度为2,C=(f,B,h)的深度为3
注意:原子的深度为0;空表的深度为1
(4)广义表可以为其他广义表共享;如:广义表B就共享表A
在B中不必列出A的值,而是通过名称来引用,B=(A)
(5)广义表可以是一个递归的表。如: F=(a,F)=(a,(a,(a,...)))
注意:递归表的深度是无穷值,长度是有限值。
(6)广义表是多层次结构,广义表的元素可以是单元素,也可以是子表,
而字表的元素还可以是子表。