31. 数据结构笔记之三十一广义表

来源:互联网 发布:matlab for mac 2014b 编辑:程序博客网 时间:2024/06/05 00:47

31. 数据结构笔记之三十一广义表

           “自己活着,就是为了使别人活得更美好。--雷锋”

           我们继续来学习广义表。

1.  什么是广义表

广义表(Lists,又称列表)是一种非线性的数据结构,是线性表的一种推广。即广义表中放松对表元素的原子限制,容许它们具有其自身结构。它被广泛的应用于人工智能等领域的表处理语言LISP语言中。在LISP语言中,广义表是一种最基本的数据结构,就连LISP 语言的程序也表示为一系列的广义表。

2.  广义表的深度

一个广义表的深度是指该广义表展开后所含括号的层数。
例如,A=(b,c)的深度为1,B=(A,d)的深度为2,C=(f,B,h)的深度为3。

3.  广义表的存储结构 

由于广义表的元素类型不一定相同,因此,难以用顺序结构存储表中元素,通常采用链接存储方法来存储广义表中元素,并称之为广义链表。
    采用链式存储结构,每个数据元素可用一个结点表示:
 (1)表结点,用以表示子表
 (2)元素结点,用以表示单元素 

 

 

4.  广义表定义

广义表是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的表尾。
  ④广义表是递归定义的

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原创粉丝点击