定义
广义表是n(n>=0)个元素a1, a2, a3, … , an的有限序列,其中ai或者是原子项,或者是一个广义表。通常记作LS = (a1, a2, a3, … , an)。LS是广义表的名字,n为它的长度。若ai是广义表,则称它为LS的子表。若广义表LS(n>=1)非空,则a1是LS的表头,其余元素组成的表(a2, a3, … , an)称为LS的表尾。
- A=()
表A是一个空表,其长度为零。 - B=(e)
表B只有一个原子e,B的长度为1。 - C=(a,(b,c))
表C的长度为2,两个元素分别为原子a和子表(b,c)。 - D=(A,B,C)
表D的长度为3,三个元素都是广义表 - E=(a, E)
表E是一个递归的表,长度为2,相当于一个无限的广义表E=(a, (a, (a, (a, … ))))。
重要性质
⑴ 广义表是一种多层次的数据结构,其元素可以是单元素,也可以是子表,而子表的元素还可以是子表。
⑵ 广义表可以是递归表。广义表的定义并没有限制元素的递归,即广义表也可以是其自身的子表。
⑶ 广义表可以为其他表所共享。例如,表A、表B、表C是表D的共享子表。
重要操作
广义表有两个重要的基本操作,即取表头操作(Head或GetHead)和取表尾操作(Tail或GetTail)。
根据广义表的表头、表尾的定义可知,对于任意一个非空的列表,其表头可能是单元素也可能是列表,而表尾必为列表。
- GetHead((a,b,c))=a
- GetTail ((a,b,c,d))=(b,c,d)
- GetHead(((a,b),(d)))=(a,b)
- GetTail(((a,b),(d)))=((d))
- GetHead(GetTail(((a,b),(c,d))))=(c,d)
1592

被折叠的 条评论
为什么被折叠?



