广义表的概念及其存储结构

广义表的定义
广义表一般定义为GL=(a1,a2,a3…,an),n>=0。
其中GL是广义表的名称,n是广义表的长度。在线性表中,ai是单元素。在广义表中,ai可以是单元素也可以是广义表,它们分别称为广义表的原子和子表。显然,广义表的定义时递归的。
一般用大写字母表示广义表的子表,用小写字母表述广义表的原子。当广义表GL非空时,第一个元素a1为GL的表头,其余元素组成的子表(a2,…,an)称为GL的表尾。
(1)A=() A是一个空表,其长度为0
(2)B=(a)B的长度为1,元素为原子,已经退化为一般的线性表
(3)C=(e,(a,b,c)) C的长度为2,第一个元素为原子,第二个元素为子表
(4)D=(A,B,C) D的长度为3
(5)E=(a,E) 这是一个递归的广义表,它的长度为2,是一个无限深度的广义表,E=(a,(a,(a,…)))
如果用圆表示原子,用正方形表示广义表,则可以用图形表示广义表。如图:

在这里插入图片描述

广义表的存储结构
由于广义表中的元素既可以是原子,也可以是广义表,两者结构不同、大小不一,且难以顺序结构存储,因此通常采用链式结构表示广义表。根据不同信息存储方式,广义表的链式存储通常可以采取两种不同的方式。无乱采取什么方式,节点必须设计成两种类型:表结点和原子节点。
1.层次结构
层次结构考虑存储广义表的层次信息。在层次结构的链式存储中,表结点设有两个指针域(next,down)。next指向同一层的下一个元素,down指向下一层子表的第一个元素;原子节点不存在下一层次,因此只有一个next指针域指向同一层的下一个元素。两者用1和0来区分。

在这里插入图片描述

2.表头表尾结构
表头表尾结构考虑存储广义表的表头和表尾信息。在表头表尾结构中,表结点设有两个指针域(head,tail),head指针指向广义表的表头元素,tail指针指向广义表的表尾元素;原子节点不设指针域,只存储元素值。两者用标志位1和0区别。

在这里插入图片描述

  • 9
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值