广义表基础知识一遍过
广义表
广义表是一种复杂的数据结构,它是线性表的扩展,能够表示树结构和图结构。
广义表的定义
广义表是n(n>=0)个数据元素a0,a1,…an-1组成的有限序列,记为GLIst=(a0,a1,…,an-1),其中ai(0<=i<=n)是原子或广义表,原子市不可分解的数据元素。
**广义表的长度:**最外层包含的元素个数n
当n=0时,为空表
**广义表的深度:**表中所含括号的层数
注意:“原子”的深度为 0 “
“空表”的深度为 1”
**递归表:**深度是无穷值,长度是有限值
例子:
L=(a,b) //线性表,长度为2,深度为1
T=(c,L)=(c,(a,b))//L为T的子表,T的长度为2,深度为2
G=(d,L,T)=(d,(a,b),(c,(a,b)))//L,T为G的子表,G的长度为3,深度为3
S=()//空表,长度为0,深度为1
S1=(S)//非空表,元素是一个空表,长度为1,深度为2
Z=(e,Z)=(e,(e,(e(....))))//递归表,Z的长度为2,深度无穷
表头:当广义表非空时,称第一个元素为该广义表的表头。
表尾:除第一个元素以外,其他的元素组成的表称为该广义表的表尾。
任何一个非空广义表 LS = ( a1, a2, …, an) 均可分解为
表头 Head(LS) = a1 和
表尾 Tail(LS) = ( a2, …, an) 两部分。
注:
1.对任意一个非空的广义表,其表头可能是单元素,也可能是广义表,
2.表尾一定是广义表。
3.表尾是由除了表头以外的其余元素组成的广义表,所以需要在表尾的直接元素外面再加一层括号。
广义表的特性
1.线性结构
2.多层次结构、有深度
3.可共享
4.可递归