[工学]数据结构讲义-数组和广义表.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.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)可

文档评论(0)

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

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

1亿VIP精品文档

相关文档