- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[工学]数据结构讲义-数组和广义表
第五章 数组和广义表 5.1 数组的定义 5.2 数组的顺序表示和实现 5.3 矩阵的压缩存储 5.3.1 特殊矩阵 5.3.2 稀疏矩阵 5.4 广义表的定义 5.5 广义表的存储结构 5.4 广义表的定义 由表头、表尾的定义可知:任何一个非空广义表其表头可能是原子,也可能是广义表,而其表尾必定是广义表。 注意广义表( )和(( ))不同。前者是长度为0的空表,对其不能做求表头的和表尾的运算;而后者是长度为1的非空表,只不过该表中唯一的一个元素是空表( ),对其可进行分解,得到表头和表尾均为空表( )。 本章课后作业 “数据结构题集(C 语言版)” P32 5.5, 5.7, 5.8 P33-34 5.12, 5.13, 5.25 5.3 矩阵的压缩存储 ? 当矩阵的非零元个数和位置在操作过程中变化较大时,采用链式 存储结构表示三元组的线形表更为合适。 ? 链表中的每个非零元可用一个含五个域的结点表示,其中i,j和e 分别表示该非零元所在的行、列和值,指针right用以链接同一行 中下一个非零元,指针down用以链接同一列中下一个非零元。 ? 同一行的非零元通过指针right链接成一个链表。 ? 同一列的非零元通过指针down链接成一个链表。 ? 每个非零元既是某个行链表中的一个结点,也是某个列链表中的 一个结点,整个矩阵构成一个十字链表。 ? 所有的行链表的头指针组成一个指针数组。 ? 所有的列链表的头指针组成一个指针数组。 ? 稀疏矩阵的十字链表由行链表头指针数组、列链表头指针数组、 行数、列数和非零元个数组成。 建立十字链表算法见 P104 算法5.4。 5.4 广义表的定义 广义表的概念 n( ? 0 )个表元素组成的有限序列,记作: LS = (a0, a1, a2, …, an-1) LS是表名,ai是表元素,它可以是表(称为子表),可以是数据元素(称为原子)。 a0为表头, ( a1, a2, …, an-1)为表尾。 n为表的长度。n = 0 的广义表为空表。 例如: A = ( ) B = ( 6, 2 ) C = ( ‘a’, ( 5, 3, ‘x’ ) ) D = ( B, C, A ) E = ( B, D ) F = ( 4, F ) ①与树对应的广义表称为纯表,它限制了表中成分的共享和递归。 ②允许结点共享的表称再入表。 ③允许递归的表称为递归表。 广义表不仅是线性表的推广,也是树的推广。 广义表的抽象数据类型 ADT Glist 见P107-108。 各种广义表的示意图 n0时,广义表的第一个元素称为广义表的表头(head),除此之外,其它元素组成的表称为广义表的表尾(tail)。 例如: A =() B =(6,2) C =(’a’,(5,3,’x’)) D =(B,C,A)= ((6,2),(’a’,(5,3,’x’)),( )) gethead(B) = 6 gettail(B) = (2) gethead(D) = B gettail(D) = (C,A) 由于(C,A)为非空广义表,则可继续分解得到: gethead(C,A) = C gettail(C,A) = (A) 5.4 广义表的定义 广义表结点定义 标志域 tag 表明结点类型。0 为原子结点,1 为表头结点。 当 tag = 0 时共用体域为 atom(存放原子结点的值)。 当 tag = 1共用体域为 hp(指向子表的表头结点的指针)。 指针域 tp 为指向一个表结点的指针。相当于线性链表的 next 域。 5.5 广义表的存储结构 tag = 0 / 1 atom / hp tp typedef struct GLNode{ int tag; union{ AtomType atom; struct GLNode *hp; }; struct GLNode *tp; } *Glist; 广义表的带表头结点的存储表示 设三元多项式P(x,y,z)为: P(x,y,z)=x10y3z2+2x6y3z2+3x5y2z2+x4y4z+6x3y4z+2yz+15 将P(x,y,z)改写为: P(x,y,z)=((x10+2x6)y3+3x5y2)z2 + (x4+6x3) y4+2y)z + 15 =Az2 + Bz + 15 则P(x,y,z)可
您可能关注的文档
最近下载
- 生产经营单位生产安全事故应急预案编制导则GB/T29639-2020 .pptx VIP
- 唯一住房补贴申请书模板.docx VIP
- 员工花名册(自带公式).xlsx VIP
- 第三章交强险.pptx VIP
- 预防校园欺凌主题班会课件(共23张PPT).pptx VIP
- 《管理会计学》教案全套 孙茂竹 第1--12章 管理会计概论--- 管理会计报告.docx
- 顾客异议的类型.ppt VIP
- 预应力管桩试桩方案.doc VIP
- 北京宜通cl-06c六轴控制器说明书.pdf VIP
- 中职英语高教版(2025)基础模块2 Unit 1 Travel 单词课件(共61张PPT)(含音频+视频).pptx VIP
文档评论(0)