广义表的定义
广义表一般定义为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区别。

广义表的概念及其存储结构相关推荐

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

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

  2. 广义表的概念及存储表示

    文章目录 广义表的概念 广义表的特性 广义表的表头和表尾 广义表的链接存储表示 头尾表示法 扩展线性链表表示法 广义表的概念 广义表的定义:广义表是 n ( n ≥ 0 ) n\ (n≥0) n (n ...

  3. 数据结构图之一(基本概念,存储结构,两种遍历)

    [1]图的基本概念 (1)图是由顶点集合以及顶点间的关系集合组成的一种数据结构. Graph = (V,E)  V是顶点的又穷非空集合:E是顶点之间关系的有穷集合,也叫边集合. (2)有向图:顶点对& ...

  4. 数据结构开发(5):线性表的链式存储结构

    0.目录 1.线性表的链式存储结构 2.单链表的具体实现 3.顺序表和单链表的对比分析 4.小结 1.线性表的链式存储结构 顺序存储结构线性表的最大问题是: 插入和删除需要移动大量的元素!如何解决? ...

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

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

  6. 线性表的顺寻存储结构

    数据结构: 数据结构也是分两个部分,一个是数据部分,一个是结构部分: 数据: 能够被计算机存储.识别和计算的东西都叫数据,但是这些数据都是以二进制存储的 硬盘中的:MP3.JPG.doc.AVI.EX ...

  7. 线性表的链式存储结构以及单链表的插入和删除原理实现

    线性表的链式存储结构 线性表中的每个元素最多只有一个前驱元素和一个后继元素(其逻辑结构),因此可以采用链式存储结构存储. 链表 线性表的链式存储结构称为链表.在链表中每个结点不仅包含有元素本身的信息( ...

  8. 这一篇让你弄懂线性表的链式存储结构

    线性表的链式存储结构以及单链表概念 本篇内容是线性表链式存储结构的相关概念 这里有几篇线性表的干货供大家讨论学习: 这里是吐血总结的线性表顺序存储结构 这里是单链表的各种操作,超详细~ 双向链表.循环 ...

  9. 数据结构和算法:(3)3.2线性表的链式存储结构

    线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素也就是说你这个可以放在A地点,这个可以放在E地点,A地点和E地点中间可以隔开一个C地点和D地点,这样是允许的),这组存储单元可以存在 ...

  10. 链表list(链式存储结构实现)_5 线性表的链式存储结构

    系列文章参考资料为<大话数据结构>,源码为个人私有,未经允许不得转载 线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,可以使连续的,也可以不连续,也就意味这些元素可以 ...

最新文章

  1. QApplicationQPushButton
  2. Delphi和C++数据类型对照表
  3. hello word 程序 ——简单的spring ioc 学习
  4. 转移地址在内存中的jmp指令 检测点9.1
  5. C语言试题五十二之学生的记录由学号和成绩组称个,n名大学生得数据已在主函数中放入结构体数组a中,请编写函数fun,它的功能时:按分数的高低排列学生的记录,高分在前。
  6. 一罐将其全部统治:Arquillian + Java 8
  7. RTP/RTCP/RTSP
  8. 转 list三种遍历效率
  9. unity UI 之text and image
  10. html做换装游戏,index.html
  11. word计算机技能大赛,办公技能大赛WORD试题.doc
  12. 2015游戏蛮牛——蛮牛杯第四届开发者大赛 创见VR未来开启报名
  13. Win10激活彻底破解:一键获取数字权利工具问世
  14. dwcs6 php 教程,初学者如何使用Dreamweaver CS6 (Dreamweaver CS6详细使用教程)
  15. 【MC-CNN论文翻译】Computing the Stereo Matching Cost with a Convolutional Neural Network
  16. Knowledge Reasoning 复习
  17. 【零基础学Python】爬虫篇 :第十一节--Python爬虫Urllib用法合集
  18. 电力系统系统潮流分析【IEEE 57 节点】(Matlab代码实现)
  19. php可以用中文的单引号吗,PHP中单双引号用法误区
  20. iOS 调用打印机

热门文章

  1. MPB:南京​湖泊所王建军组-​湖泊沉积物的野外采集方法
  2. 通过 wordexport插件 js jq 生成word文档 并导出
  3. git 删除历史commit
  4. C语言的switch语句
  5. 不用 IDE,仅用命令行 + SDK 开发 Android App
  6. App 抓包提示网络异常怎么破?
  7. php编写的旅游网站
  8. 买不起MacBook,使用Windows 10配置zsh命令行做开发
  9. 职场人如何制定学习计划?
  10. 【周六福利来了~】优才安卓公开课:程序员到架构师之路