数据结构复习之广义表


广义表是线性表的推广。即广义表中放松对表元素的原子限制,容许它们具有其自身结构

知识点

定义

广义表通常记作:

Ls=( a1,a2,…,ai,…,an)。

Ls是广义表的名字,n为它的长度。

若ai是广义表,则称它为Ls的子表。

一个表展开后所含括号的层数称为广义表的深度
注:
广义表通常用圆括号括起来,用逗号分隔其中的元素。

为了区分原子和广义表,书写时用大写字母表示广义表,用小写字母表示原子。广义表中存储的单个元素称为 “原子”,而存储的广义表称为 “子表”。

若广义表Ls非空(n≥1),则al是LS的表头(head),其余元素组成的表(a1,a2,…,an)称为Ls的表尾(tail)。

广义表是递归定义的

广义表性质

  1. 广义表的元素可以是子表,而子表又可以含有子表,因此广义表是一个多层次结构的表,它可以用图来形象地表示。
    在这里插入图片描述

  2. 广义表具有递归和共享的性质,
    D表是共享的表,在表D中可以不必列出子表的值,而是通过子表的名字来引用。

广义表基本运算,考点

只有两个特殊运算:取表头head(Ls)和取表尾tail(Ls)。任何一个非空的广义表其表头可能是原子,也可能是子表,而其表尾一定是子表。
如:广义表中 LS={1,{1,2,3},5} 中,表头为原子 1,表尾为子表 {1,2,3} 和原子 5 构成的广义表,即 {{1,2,3},5}。
在广义表 LS = {1} 中,表头为原子 1 ,但由于广义表中无表尾元素,因此该表的表尾是一个空表,用 {} 表示。

广义表的存储结构

结点结构:

tagdata/slinklink

(1)tag标志位,tag=1,该结点是子表,第二个域为slink,用以存放子表的地址;当tag=0时,该结点是原子结点,第二个域为data,用以存放元素值。
(2)link域是用来存放与本元素同一层的下一个元素对应结点的地址,当该元素是所在层的最后一个元素时,link的值为NULL。

小结

栈和队列都是典型的线性结构,结构中数据元素都是不能分解的非结构的原子类型。它们的逻辑特征是:每个数据元素至多有一个直接前趋和直接后续。而多维数组和广义表是一种复杂的非线性结构,它们的逻辑特征是:一个数据元素可能有多个直接前趋和直接后继。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guangod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值