广义表是线性表的推广,也称为列表(Lists)。线性表中的元素仅限于单个数据元素(原子),即不可以再分割;而广义表中的元素即可以是原子,也可以是子表。
一、广义表的定义和运算
1、广义表的定义
广义表是n(n>=0)个数据元素a1,a2,a3…an的有序序列,一般记做:
LS=(a1,a2,a3…an)
其中LS是广义表的名称,n是广义表的长度。每个a3(1<=3<=n)是LS非空时,称第一个元素a1为LS的表头(head),称其余元素组成的表(a2,…,ai…,an)为LS的表尾(tail)。显然,广义表的定义是递归的。
广义表通常用圆括号起来,并用逗号分隔开来,通常用大写字母表示广义表,用小写字母表示单个数据元素。下面是广义表的例子:
A=()——A是一个空表,它的长度为零
B=(e)——列表B只有一个原子e,它的长度是1
C=(a,(b,c,d))——列表C的长度为2,两个元素分别为a和子表(b,c,d)
D=(A,B,C)——列表D的长度为3,三个元素都是列表,将A,B,C带入后得D=((),(e),(a,(b,c,d))
E=(a,E)——这是一个递归表,它的长度为2,正相当于一个无限的列表。
广义表的长度指该广义表中所包含的元素(原子和子表&