[工学]第5讲 数组和广义表.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[工学]第5讲 数组和广义表

数组 矩阵的压缩存储 对称矩阵 三角矩阵 稀疏矩阵 (Sparse Matrix) 三元组表 当稀疏矩阵的阶很高时,如采用一般矩阵的存储方法将浪费大量的存储空间。 一种直观、常用的方法是,对每个非零元素,用三元组(行号,列号,元素值)来表示,这样每个元素的信息就全部记录下来了。 广义表 General List 1.广义表的概念,广义表通常简称为表,由 n(?0)个表元素组成的 有限序列,记作 GL = (a1, a2, a3, …, an) ,GL是表名,ai为表元素,简称为元素,它可以是表(称为子表元素,简称为子表),可以是数据元素(称为原子元素,简称为原子) 2.n为表的长度。n=0的广义表为空表 3.n0时,表的第一个表元素称为广义表 的表头(head),除此之外,其它表元素组 成的表称为广义表的表尾(tail) 由于广义表中的元素又可以是广义表,因此对于广义表有深度的概念。广义表GL的深度Depth(GL)定义如下: 广义表的深度本质上就是广义表表达式中括号的最大嵌套层数。例如: 2 深度为0(括号层数为0) () 深度为1(括号层数为1) (2, (3, 6)) 深度为2(括号层数为2) 广义表基本操作 1.GenListNodeElemType *First() const 初始条件:广义表已存在。 操作结果:返回广义表的第一个元素。 2.GenListNodeElemType *Next(GenListNodeElemType *elemPtr) const 初始条件:广义表已存在,elemPtr指向广义表的元素。 操作结果:返回elemPtr指向的广义表元素的后继 3.bool Empty() const 初始条件:广义表已存在。 操作结果:如广义表为空,则返回true,否则返回false 4.void Push(const ElemType e) 初始条件:广义表已存在。 操作结果:将元子元素e作为表头加入到广义表最前面。 5.void Push(GenListElemType subList) 初始条件:广义表已存在。 操作结果:将子表subList作为表头加入到广义表最前面。 6.int Depth() 初始条件:广义表已存在。 操作结果:返回广义表的深度。 广义表的存储结构 广义表通常借助引用数链式存储结构——引用数法广义表。在这种方法中,每一个表结点由三个域组成,结点可分为三类: (1)头结点:用标志域tag=HEAD标识,数据域ref用于存储引用数,广义表的引用数表示能访问此广义表的广义表或指针个数,后面章节将对引用数的内涵作详细的介绍。 (2)原子结点:用标志域tag=ATOM标识,原子元素用原子结点存储,数据域atom用于存储原子元素的值。 (3)表结点:用标志域tag=LIST标识,指针域subLink用于存储指向子表头结点的指针。 A=(),B=(x, y, z),C=(B, y, z),D=(x,(y, z)),E=(x, E) // 引用数法广义表类模板 templateclass ElemType class RefGenList { protected: // 引用数法广义表类的数据成员: RefGenListNodeElemType *head; // 头指针 // 辅助函数模板: void ShowHelp(RefGenListNodeElemType *hd) const; // 显示以hd为头结点的广义表 int DepthHelp(const RefGenListNodeElemType *hd); // 计算以hd为表头的广义表的深度 void ClearHelp(RefGenListNodeElemType *hd); // 释放以hd为表头的广义表结构 void CopyHelp(const RefGenListNodeElemType *sourceHead, RefGenListNodeElemType *destHead); // 将以destHead为头结点的广义表复制成以 // sourceHead为头结点的广义表 static void CreateHelp(RefGenListNodeElemType *first); // 创建以first为头结点的广义表 public: // 抽象数据类型方法声明及重载编译系统默认方法声明: RefGenList(); // 无参数的构造函数模板 RefGenList(RefGenListNodeElemType *hd); // 由头结点指针构造广义表 ~RefGenLis

文档评论(0)

jiupshaieuk12 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档