广义表的定义
广义表简称表,它是线性表的推广。一个广义表是n(n≥0)个元素的一个序列,若n=0时则称为空表。设ai为广义表的第i个元素,则广义表GL的一般表示与线性表相同:
GL=(a1,a2,…,ai,…,an)
其中n表示广义表的长度(即广义表中所含元素的个数,n≥0),如果ai是单个数据元素,则ai是广义表GL的原子;如果ai是一个广义表,则ai是广义表GL的子表。
广义表具有如下重要的特性:
(1)广义表中的数据元素有相对次序;
(2)广义表的长度定义为最外层包含元素个数;
(3)广义表的深度定义为所含括弧的重数。其中原子的深度为0,空表的深度为1;
(4)广义表可以共享;一个广义表可以为其他广义表共享;这种共享广义表称为再入表;
(5)广义表可以是一个递归的表。一个广义表可以是自已的子表。这种广义表称为递归表。递归表的深度是无穷值,长度是有限值;
(6)任何一个非空广义表GL均可分解为表头head(GL) = a1和表尾tail(GL) = ( a2,…,an) 两部分。
广义表的表头和表尾怎么看?
广义表((a,b),c,d)表头和表尾分别是什么?
(1)表头:当广义表LS非空时,称第一个元素为LS的表头;
(2)表尾:称广义表LS中除去表头后其余元素组成的广义表为LS的表尾。
表头是元素,表尾是广义表。
举个几个例子
广义表(a, (b))的表头是单元素a,表尾是广义表((b))。在(b)的外面加一层小括号,才能变成广义表。因此是((b))。
广义表(a)的表头是单元素a,表尾是广义表(),a后面没有元素了,想想表尾一定是个广义表。就是一定带()。
广义表(a, b, c)的表头是单元素a,表尾是广义表(b,c)。
总结:
(1)对任意一个非空的广义表,其表头可能是单元素,也可能是广义表,
(2)而其表尾一定是广义表。
(3)注意表尾的深度(即括号的嵌套层数)
(4)表尾是由除了表头以外的其余元素组成的广义表,所以,需要在表尾的直接元素外面再加一层括号。