1.广义表的定义
广义表是一种非线性的数据结构,顾名思义,它也是线性表的一种推广。线性表被定义为一个有限的 序列(a1,a2,a3,…,an)其中ai被限定为是单个 数据元素。广义表也是n个 数据元素d1,d2,d3,…,dn的有限序列,但不同的是,广义表中的di 则既可以是单个元素,还可以是一个广义表,通常记作:GL=(d1,d2,d3,…,dn)。GL是广义表的名字,通常广义表的名字用大写字母表示。n是广义表的长度。也就是说,广义表的元素也是广义表,是一种递归结构。
2.表头与表尾
广义表的表头是广义表的第一个元素,可以是一个特定的类型,也可以是一个广义表。广义表的表尾是广义表中将除了第一个元素之外的所有元素看做一个广义表,除去表头的部分是表尾。
3.应用举例
l D=() 空表;其长度为零。
l A=(a,(b,c)) 表长度为2的广义表,其中第一个元素是单个数据a,第二个元素是一个子表(b,c)。
l B=(A,A,D) 长度为3的广义表,其前两个元素为表A,第三个元素为空表D。
l C=(a,C) 长度为2 递归定义的广义表,C相当于无穷表C=(a,(a,(a,(…))))。
其中,A,B,C,D是广义表的名字。下面以广义表A为例,说明求表头、表尾的操作如下:
head(A)=a; 表A的表头是:a
tail(A)=((b,c)); 表A的表尾是((b,c))。广义表的表尾一定是一个表。