C++ 数据结构(六广义表)


广义表

定义

广义表也是表!区别线性表(顺序表、链表)广义表中放松对表元素的原子限制,容许它们具有其自身结构(表中元素可以是个“表”)。

表示

广义表的类型(元素+深度)有哪些?
A=().A是一个空表,表长度0
A=(e).A长度为1的广义表,元素是原子元素,是个线性表。
A=(a,B)=(a,(b,c,d)).A是一个长度为2,第一个元素为原子元素a,第二个元素为表B=(b,c,d).深度为3.
A=(A,B).A是一个长度为2的广义表,2个元素都是表且第一个元素为表自身.
A=©=(()).A是长度为1,元素为空的表.

性质

从定义和表示就能找出性质!!!
广义表是一种“多层”次的数据结构(表中表、弟中弟、盖中盖),也可以是单元素。
广义表可以是递归表,其元素不受限制。
广义表可以为其它表共享。允许节点共享,再入表:节点共享!

操作

基本操作:取头操作+取尾操作(取尾操作尾必须是广义表Head(B) = e,Tail(B) = ())
既然是线性表的推广:增删改查都有

存储

广义表存储基本使用链式存储结构来存储。
链式存储根据节点形式分为:头尾表示法、孩子兄弟表示法。

头尾表示法+孩子兄弟表示法

头尾表示:广义表不空,一个表头一个表尾确定唯一的一个广义表。(取尾操作:表尾必须是表表示)
表中元素:表节点/元素节点(标志域0/1区分)
孩子兄弟表示:广义表不空,兄弟指针+孩子指针+元素值
表中元素:有孩子节点/无孩子节点(标志域0/1区分)

在这里插入图片描述
广义表操作:递归定义便递归操作


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Echo一

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

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

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

打赏作者

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

抵扣说明:

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

余额充值