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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值