广义表

广义表(广义表也称为列表,是线性表的一种推广,也是数据元素的有序序列)
一、基础
1.如何设定链表结点?广义表中的数据元素可能为单元素(原子)或子表,由此需要两种结点:一种是表结点,用以表示广义表;一种是单元素结点,用以表示单元素(原子)。
2.广义表的每个元素都是原子时,广义表便成了线性表。
3.广义表具有以下重要的特性:
(1)广义表中的数据元素是有相对次序的。
(2)广义表的长度定义为最外层包含元素的个数。
(3)广义表的深度定义为所含括弧的重数,其中原子的深度为0,空表的深度为1。(看右侧括号的个数即深度), 一个广义表的深度等于括号联套的最大层数。
(4)广义表可以共享,一个广义表可以被其他广义表共享,这种共享广义表称为再入表。
(5)广义表可以是一个递归的表,一个广义表可以是自己的子表,这种广义表称为递归表。递归表的深度是无穷值,而长度是有限值。
(6) 任何一个非空广义表GL均可分解为表头head(GL) = a1和表尾tail(GL) = ( a2,…,an) 两部分。
(7) 广义表的取表尾运算,是非空广义表除去表头元素,剩余元素组成的表。
(8) 广义表是一种递归的数据结构,因此很难为每个广义表分配固定大小的存储空间,所以其存储结构只好采用动态链式结构。
(9) 若一个广义表的表头为空表,则此广义表亦为空表。
4. 在广义表的存储结构中,每个结点均包含3个域。
5. 对矩阵压缩是为了节省存储空间.
6.对于一个非空广义表,可能不含任何原子元素
7.一个广义表的表尾肯定为一个广义表
8.广义表可以是一个多层次的结构
9.数据结构中数据的逻辑结构分为线性结构和非线性结构。
10常用的线性结构有:线性表,栈,队列,双队列,数组,串。
11.常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图。
12.线性结构是一个有序数据元素的集合。关于广义表,是一种非线性的数据结构。
13.多型数据类型是指包含的数据元素的类型并不确定。字符串不是多型数据类型,栈是多型数据类型
二、例题

  1. GetHead( GetTail(((a,b),(c,d))))=(c,d)
    解析:GetTail(((a,b),(c,d))) = ((c,d))
    GetHead( ((c,d)) ) = (c,d)
    PS:Tail((a)) = (a);Head((a)) = a;
    2.设广义表L= ((), ()),则hesd (L)是(); tail (L)是(()); L的长度是2;深度是2。
    3.广义表(a, (a,b) ,d,e,((i,j),k)) 的长度是5,深度是3。
    4.已知广义表LS= ((a,b,c),(d,e,f)),运用head和tail函数取出LS中原子e的运算是Head(Tail(Head(Tail(LS))))。
    解析:Tail(LS)=((d,e,f))
    Head(Tail(LS))=(d,e,f)
    Tail(Head(Tail(LS)))=e,f
    Head(Tail(Head(Tail(LS))))=e
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值