目录
广义表
定义
广义表可以看成线性表的延申,线性表则是广义表的一种特例。广义表中的元素既可以是元素,也可以是广义表。是一种可以含有递归的数据结构,如F=(a, F)称为递归/嵌套表。
一些基本概念
广义表中最特殊的是表尾的定义:除了表头以外的其他元素组成的子表。
表头可以是一个元素或一个表,但表尾一定是一个表。
有趣的思考题
判断题:A=(()) ,A的表头与表尾相等
答案:对。都是空表。
更多例子
其中E称为共享广义表,F称为递归/嵌套广义表
广义表的性质
广义表是多层次结构,可以用图表示。广义表含有次序,也有长度和深度。广义表之间互相引用称为共享。其中,广义表的深度稍微需要花点时间理解,请见下图。
特殊的:递归表的长度与深度
如上图中(6)F=(a, F) 。它的长度为2而不是无穷,是有限值;但深度为无穷值。
思考
问:广义表能否用数组存储?
答:不能。数组中每一个元素占用同样大小的存储空间,而广义表显然不符合此特征。所以广义表一般使用链表进行存储。