目录

广义表存储结构构思:

广义表的相关操作分析,进而对图示进行改进:

改进方案 :

广义表节点的定义:

广义表链式存储实例:

求广义表的长度

求广义表的深度:

代码分析:

输出广义表

建立广义表的链式存储结构:

特殊情况汇总 :

答疑环节:


广义表存储结构构思:

通过上节广义表的定义 , 我相信大家对广义表有了大致的了解 , 广义表可以有多层嵌套 ,灵活多变 , 纵观四种表示方式 ,我们认为图解最直观 .

所以我们接下来的操作 ,就是在图的基础上来进行操作的.

广义表的相关操作分析,进而对图示进行改进:

数据操作:
        (1) CreatGL(s): 创建广义表
        (2) GLLength(L): 求广义表长度;
        (3) GLDepth(L): 求广义表深度;
        (4) DisGL(L): 输出广义表L;
        (5)    Head(L): 求表头
        (6) Tail(L): 求表尾



通过观察左图 ,纵然直观 ,可以看出从 节点C出发,进行分叉 , 但是结合具体操作 ,我们会发现 ,有多出口 , 多入口 , 造成程序运行的多变性 , 不利于机器语言的模式化设计 , 多出口 ,给语言设计带来不确定性 , 检索困难 .


改进方案 :

所以我们要在直观的基础上 ,对广义表图示存储结构进行一些牺牲  , 根据广义表的定义 , 广义表是有先后顺序的 ,所以我们每一层都只保存一个出口 ,让每一层的第一个节点(也称表头节点 )当作链接入口节点 , 其他的同一层的节点 ,称作其的兄弟,如右图 :


所以我们就形成了 ,逻辑上的多层链表结构 ,如下图:

广义表节点的定义:

通过观察上面的广义表结构 , 广义表在同一层级的数据元素包括 单个数据元素(原子)广义表的子表


所以我们需要对这两种类型的节点进行定义

我们可以为这两种节点设置类型标识 :

1 ---子表 , 0----原子

因为 原子和广义表子表的存储的数据也不一样 , 原子存放的是 数据data, 广义表子表节点存放的是指向下一个元素的指针数据

typedef struct lnode
{int tag;   //节点类型标识												

广义表的存储结构及其基本运算相关推荐

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

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

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

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

  3. 广义表的存储结构--头尾链表存储表示/扩展线性链表存储表示

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

  4. 不同表结构数据迁移_C语言:数据结构-广义表的存储结构

    广义表相对于线性表﹑数组﹑串等线性结构是较为复杂的结构,其元素可以具有不同的结构(可以是原子,也可以是列表),通常采用链式结构存储广义表. (1)表头.表尾链式存储 链式结构中用结点储存列表中的数据元 ...

  5. 如何画出广义表的存储结构

    这部分王道书没有提到,但是自主命题的学校考过这种题,为了方便自己复习,所以写的方法比较通俗,方便理解 例:画出广义表(a,(x,y),((x)))的存储结构 分析:可以这么理解 1.一个完整的括号相当 ...

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

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

  7. 【数据结构与算法】广义表的储存结构和结点定义的Java实现

    广义表的存储结构 广义表中元素类型不统一,在Java语言的环境下难以用顺序结构存储.链式结构则相对灵活,可以解决广义表的递归和共享问题,所以常用链式存储结构来对广义表进行存储. 如果广义表不空,则可以 ...

  8. 线性表的存储结构总结

    线性表 分为:顺序表 和 链表(单链表,双链表,循环链表(单双),静态链表) 顺序表的存储结构 :设MaxSize为一个整形常量 需要: 定义一个数组来存储线性表中的元素 定义一个整型变量来存储线性表 ...

  9. 【数据结构总结】第四章:串、数组和广义表(线性结构)

    第四章:串.数组和广义表(线性结构) 提示:本文主要是以思维导图的形式概括数据结构第一章的精华内容,基本不会用到文字性的内容,目的是为了给大家梳理每个重要的知识点的相关概念,方便大家在复盘的时候快速阅 ...

  10. 递增有序顺序表的插入 (20分) 实验目的:1、掌握线性表的基本知识 2、深入理解、掌握并灵活运用线性表。3、熟练掌握线性表的存储结构及主要运算的实现 已知顺序表L递增有序,将X插入到线性表的适当位置

    递增有序顺序表的插入 (20分) 实验目的:1.掌握线性表的基本知识 2.深入理解.掌握并灵活运用线性表.3.熟练掌握线性表的存储结构及主要运算的实现 已知顺序表L递增有序,将X插入到线性表的适当位置 ...

最新文章

  1. Java and Python: a perfect couple - Developer.com
  2. sql loader 导入数据时的问题
  3. 每日温度—leetcode739
  4. 直播预告|中台基石腾讯云TStack的正确使用姿势
  5. IIS Express 无法启动
  6. 精讲23种设计模式-基于观察者模式~设计异步多渠道群发框架
  7. 低脂肪肉能帮你减肥吗?
  8. IE浏览器中Image对象onload失效的解决办法
  9. 【Openstack】【Nova】开发者入门,开发工作流
  10. 安装nvm nodejs npm webpack vue vue-cli
  11. nginx匹配规则说明以及匹配的优先级
  12. 平面设计师必读的十本书
  13. 【PostgreSQL-9.6.3】约束
  14. apache+tomcat,搭建负载均衡服务器
  15. linux实训4文件系统管理,实训项目2 Linux文件系统管理
  16. SPSS基础教程:SPSS菜单命令详解(二)
  17. 2020安洵杯--MISC
  18. YYImage加载gif动态图原理
  19. 安装NVIDIA驱动与CUDA教程(+cuDNN)(终极版)
  20. java做橡皮擦效果_顶风作案,html5 canvas实现橡皮擦功能,擦了就知道有惊喜了...

热门文章

  1. cf3月活动大全 3月活动汇总2015
  2. 真人玩计算机图片大全集,微信真人表情图片大全 用自己的照片做微信真人表情包(好玩),各类搞笑素材任你选择...
  3. 如何用计算机测量图片景深,用比较仔细的测量搞清楚“景深”(1.实测景深与公式比较)...
  4. 交换机路由器常用命令大全
  5. python爬虫代码大作业_爬虫大作业
  6. 这三年沉淀的前端错误监控系统,一篇文章讲透给你
  7. 《A Study on Performance Benefifits of Core Morphing in an Asymmetric Multicore Processor》文献精读1
  8. 蚂蚁金融科技全面开放战略背后的技术布局
  9. 心跳检测,用oob实现
  10. 计算机应用 行动计划范文,制定计算机学习计划范文3篇0001.docx