广义表定义
广义表(Lists,又称列表)是一种非线性的数据结构,是线性表的一种推广。即广义表中放松对表元素的原子限制,容许它们具有其自身结构。它被广泛的应用于人工智能等领域的表处理语言LISP语言中。在LISP语言中,广义表是一种最基本的数据结构,就连LISP 语言的程序也表示为一系列的广义表。
广义表是n(n≥0)个元素a1,a2,…,ai,…,an的有限序列。
其中:
①ai--或者是原子或者是一个广义表。
②广义表通常记作:Ls=( a1,a2,…,ai,…,an)。
③Ls是广义表的名字,n为它的长度。
④若ai是广义表,则称它为Ls的子表。
注意:
①广义表通常用圆括号括起来,用逗号分隔其中的元素。
②为了区分原子和广义表,书写时用大写字母表示广义表,用小写字母表示原子。
③若广义表Ls非空(n≥1),则al是LS的表头,其余元素组成的表(a1,a2,…,an)称为Ls的表尾。
④广义表是递归定义的
一、广义表特性:
1.层次性:广义表的元素可以是子表,而子表的元素还可以是子表,由此,广义表是一个多层次的结构;
2.共享性:广义表可为其他表所共享。
3.递归表:广义表可以是其自身的一个子表。
二、深度和长度
广义表(((a,b,(),c),d),e,((f),g))的长度是____,深度是____?
广义表长度是数第一层括号内的逗号数目可以看到,只有一个元素,就是((a,b,(),c),d),e,((f),g),所以长度是1,深度是数括号数目,深度是4。
三、表头和表尾