第十三章 数据结构 广义表的定义

定义

广义表简称表,它是线性表的推广。一个广义表是n(n≥0)个元素的一个序列,若n=0时则称为空表。

设ai为广义表的第i个元素,则广义表GL的一般表示与线性表相同:
GL=(a1,a2,…,ai,…,an)
其中n表示广义表的长度,即广义表中所含元素的个数,n≥0。如果ai是单个数据元素,则ai是广义表GL的原子;如果ai是一个广义表,则ai是广义表GL的子表

典型例题

第十三章 数据结构 广义表的定义第十三章 数据结构 广义表的定义

解析:GetTail(((a,b),(c,d))) = ((c,d))
GetHead( ((c,d)) ) = (c,d)
PS:Tail((a)) = (a);
Head((a)) = a;

简要概念

(1)广义表中的数据元素有相对次序;
(2)广义表的长度定义为最外层包含元素个数;
(3)广义表的深度定义为所含括弧的重数。其中原子的深度为0,空表的深度为1;
(4)广义表可以共享;一个广义表可以为其他广义表共享;这种共享广义表称为再入表;
(5)广义表可以是一个递归的表。一个广义表可以是自已的子表。这种广义表称为递归表。递归表的深度是无穷值, 长度是有限值;
(6) 任何一个非空广义表GL均可分解为表头head(GL) = a1和表尾tail(GL) = ( a2,…,an) 两部分。
(7) 广义表的取表尾运算,是非空广义表除去表头元素,剩余元素组成的表。
(8) 当广义表中的每个元素都是原子时,广义表便成了线性表。
(9) 广义表是一种递归的数据结构,因此很难为每个广义表分配固定大小的存储空间,所以其存储结构只好采用动态链式结构。
(10) 若一个广义表的表头为空表,则此广义表亦为空表。