文章目录

  • 广义表的概念
  • 广义表的特性
  • 广义表的表头和表尾
  • 广义表的链接存储表示
    • 头尾表示法
    • 扩展线性链表表示法

广义表的概念

广义表的定义:广义表是 n ( n ≥ 0 ) n\ (n≥0) n (n≥0) 个表元素组成的有限序列。

广义表的表示: L = { e 1 , e 2 , . . . , e n } L=\{e_1,\ e_2,...,\ e_n\} L={e1​, e2​,..., en​},其中

  • L L L为表名
  • e i e_i ei​是表元素
  • n n n是表长, n = 0 n=0 n=0是空表, n ≠ 0 n≠0 n​=0是非空表
  • “(” 和 ")"是表的分界符,不计入表的长度

广义表的表元素可以是不可再分的原子,还可以是广义表,称为广义表的子表。


广义表的特性

  • 有次序:广义表的表元素的排列次序不能随意交换
  • 有层次:广义表的表元素可以是子表,子表还可以有子表
  • 有深度:最大嵌套层数即为广义表的深度,用括号重数来识别
  • 可共享:广义表的子表可为多个广义表的子表
  • 可递归:广义表的子表可以是自身

广义表的表头和表尾

  • 广义表的表头:广义表的第一个表元素即为广义表的表头,它可以是原子,也可以是子表。
  • 广义表的表尾:除第一个元素外的其他元素组成的表为广义表的表尾,它一定是广义表。

广义表的链接存储表示

广义表的表元素都是原子时退化为线性表,它的连接存储表示为单链表。

一般情况下,广义表的链接存储表示是双链表。

头尾表示法

双链表有两种结点:

  • 表结点:代表广义表或子表,它的 h l i n k hlink hlink指针指向表头, t l i n k tlink tlink指向表尾,这是一种分支结点。
  • 原子结点:用于存储数据,指向它的指针是 h l i n k hlink hlink,它是链尾的表结点,省去了收尾指针。

特别的,空表没有结点,指向它的指针为NULL。

例如,对于广义表 L = ( c , ( d , e , f ) , ( ) ) L=(c,(d,e,f),()) L=(c,(d,e,f),()),它的头尾存储表示如下:

扩展线性链表表示法

这种表示法不分表头和表尾。

双链表有两种结点:

  • 表结点:它的 h l i n k hlink hlink指针指向该表的第一个表元素结点, t l i n k tlink tlink指针指向同一层下一个表元素结点。特别的,空表的 h l i n k hlink hlink和 t l i n k tlink tlink指针都为NULL。
  • 原子结点:用于存储数据,有 t l i n k tlink tlink指针,指向同一层下一个表元素结点。

例如,对于广义表 L = ( c , ( d , e , f ) , ( ) ) L=(c,(d,e,f),()) L=(c,(d,e,f),()),它的扩展线性链表存储表示如下:

广义表的概念及存储表示相关推荐

  1. C语言——数据结构之广义表(概念及其存储结构)

    前言 本节我们来说说C语言中的广义表.主要介绍广义表的概念定义,并说明其存储结构,算法中将使用到递归思想. 广义表是线性表的一种推广,在数据结构中有广泛应用. 一.广义表的概念 1.广义表的概念 (1 ...

  2. 广义表的头尾链表存储表示(第五章 P115 算法5.5,5.6,5.8)

    /* 广义表的头尾链表存储表示 */typedef enum{ATOM,LIST}ElemTag; /* ATOM==0:原子,LIST==1:子表 */typedef struct GLNode{E ...

  3. 广义表及其存储方式简介

    广义表(Lists,又称列表)是线性表的推广.线性表定义为n>=0个元素a1,a2,a3,-,an的有限序列.线性表的元素仅限于原子项,原子是作为结构上不可分割的成分,它可以是一个数或一个结构, ...

  4. 【数据结构】广义表的存储结构及基本运算(C语言)

    目录 1. 广义表基本概念 2. 广义表的存储结构 2.1 头尾链表存储结构 2.2 同层结点链存储结构 3. 广义表的基本运算 3.1 求表头.表尾 3.2 求长度.深度 3.3 统计原子数目 3. ...

  5. 【数据结构】广义表的基本概念

    广义表的基本概念 广义表不是考试的重点,只要理解基本概念就行了. 书上介绍的广义表,我觉得简单来理解的话就是狭义的列表,因为书上规定了列表的表头可以是原子或者子表,但是表尾必须是子表,在python中 ...

  6. 5.4广义表的定义5.5广义表的存储结构

    广义表是线性表的推广. 广义表一般记作LS=(α1,α2,...,αn) n是它的长度αi可以是单个元素也可以说广义表,分别称为广义表LS的原子和子表. 当广义表LS非空时,称第一个元素α1为LS的表 ...

  7. 11广义表的基本概念和性质

    广义表 广义表的概念 定义:广义表(又称列表Lists)是n≥0个元素,a0,a1,-,an-1的有限序列,其中每一个ai或者是原子,或者是一个广义表. 广义表通常记作:LS=(a1,a2,-,an) ...

  8. 数据结构之广义表的相关知识点

    一,广义表的基本概念: 广义表(Lists,又称列表)是一种非线性的数据结构,是线性表的一种推广.即广义表中放松对表元素的原子限制,容许它们具有其自身结构(即可以有子表).它被广泛的应用于人工智能等领 ...

  9. 广义表的链式定义和基础操作

    广义表的定义 广义表(Lists,又称列表)是线性表的推广.线性表定义为n>=0个元素a1,a2,a3,-,an的有限序列.线性表的元素仅限于原子项,原子是作为结构上不可分割的成分,它可以是一个 ...

最新文章

  1. 百度paddle学习笔记
  2. C与CUDA混合编程的配置问题
  3. SQLSever触发器建立
  4. document.execCommand()函数可用参数解析 (转)
  5. lsof/netstat命令的一个重要作用: 根据进程查端口, 根据端口查进程
  6. python如何开启多线程_Python如何创建多线程
  7. Valid BFS? CodeForces - 1037D(思维 bfs)
  8. 接口测试--ApiPost组成介绍
  9. android打开文件管理获取文件名,如何从android中的文件路径获取文件名
  10. 解决Excel装了excel link 加载宏之后,打开excel就自动打开matlab的方法
  11. xmapp mysql启动失败 Attempting to start MySQL service...
  12. 求不大于N的最大质数
  13. 1055 集体照 (25 分)
  14. 计算机网络选择公用还是家庭,如何设置打印机共享?
  15. GPT分区规划与各分区作用解析
  16. 基于Impala的网易有数BI查询优化总结
  17. Tengine全面支持寒武纪思元芯片平台,共同推进AI芯片加速之路
  18. 最全的100个Python精选库,建议收藏!
  19. 万能密码或账号登录语句
  20. 跟百事斗了100年,可口可乐凭什么“赢”?

热门文章

  1. 你了解HTTP2协议吗?(一)
  2. http/2与http/1的区别
  3. 【附源码】计算机毕业设计SSM人力资源管理系统
  4. golang关于panic的解析
  5. 《NTC电阻在充电中的应用》
  6. 全国电费优惠充值接口源码
  7. 网络隧道Tunnel技术
  8. 怎么写一份好的接口文档?
  9. Xcode10.1安装插件
  10. Your project path contains non-ASCII characters. 解决办法