广义表的概念
广义表的概念
广义表一般记作GL=(d1,d2,…,dn)
GL:广义表的名称。
n:长度,结点的个数。
di:可为单个元素,也可为广义表(子表),分别称为原子结点和表结点。
表头:d1。
表尾:其余元素组成的子表,即去掉表头元素的结果(d2,d3,…,dn)。
可见,广义表的定义是递归定义的。
例如:
D=( ):空表,n=0
A=(a,(b,c)):n=2,元素a、子表(b,c)
B=(A,A,D):n=3,元素是A、A、D
C=(a,C):n=2,一个递归的的表,元素是a、C。相当无穷表(a,(a,(…)))
head(A):a
tail(A):((b,c))
广义表的重要特点
广义表的元素可以是子表,而子表的元素还可以是子表,具有层次性。
例如: A=(a,((b),c))
广义表可被其它广义表共享。
例如: B=(A,A,D)
广义表具有递归性。
例如: C=(a,C)
广义表的深度
广义表中括号嵌套的最大层数。
例如:
D=( ):深度1
A=(a,(b,c)):深度2
B=(A,A,D):深度1
C=(a,C):深度1
E((a,(b,c),((a,b),c))):深度4
广义表的存储结构
广义表的头尾链表存储结构
(1) 广义表的确定
一对确定的表头和表尾可以唯一的确定一个广义表。
表头可以是原子结点或表结点,表尾一定是表结点。
(2) 广义表的结点
(3) 广义表的头尾链表存储结构类型定义
(4) 举例:头尾链表存储结构
D=( )
A=(a,(b,c))
2广义表的同层结点链存储结构
(1) 结点
(2) 广义表的同层结点链存储结构类型定义
(3) 举例:同层结点链存储结构
D=( )
A=(a,(b,c))
欢迎大家加我微信交流讨论(请备注csdn上添加)