授课时间 10 1 第11 次课.docVIP

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

《 数据结构 》教案 PAGE PAGE 8 《 数据结构 》教案 授课时间 10 17 第 11 次课 授课章节 第五章 数组和广义表 任课教师 及职称 郑志华 教学方法 与手段 多媒体 课时安排 4*20 使用教材和 主要参考书 《数据结构》(C语言版)严蔚敏著,清华大学出版社 教学目的与要求: 第五章 数组 5.1.数组的定义 5.2数组的顺序表示和实现 5.3.矩阵的压缩存储(1) 教学重点,难点: 1.二维数组 2.稀疏矩阵. 教学内容: 第5章 数组和广义表 5.1数组的定义和运算 数组是我们十分熟悉的一种数据类型,很多高级语言都支持数组这种数据类型。 抽象数据类型的定义如下: ADT Array 数据对象:D={ | n0,称为数组的维数,ji是数组的第i维下标,1≤ji≤bi,bi为数组第i维的长度,∈ElementSet} 数据关系:R={R1,R2,…,Rn} ????????? Ri={ | 1≤jk≤bk,1≤k≤n 且k≠i,1≤ji≤bi-1,∈D,i=1,…,n} 基本操作: (1)??????????? InitArray(A,n,bound1,…,boundn): 若维数n和各维的长度合法,则构造相应的数组A,并返回TRUE; (2)??????????? DestroyArray(A): 销毁数组A; (3)??????????? GetValue(A,e, index1, …,indexn):? 若下标合法,用e返回数组A中由index1, …,indexn所指定的元素的值。 (4)??????????? SetValue(A,e,index1, …,indexn): 若下标合法,则将数组A中由index1, …,indexn所指定的元素的值置为e。 5.2数组的顺序存储和实现 早在线性代数中,我们就学习了关于矩阵的知识。矩阵是科学计算、工程数学,尤其是数值分析经常研究的对象。在计算机高级语言中,矩阵通常可以采用二维数组的形式来描述。 但是有些高阶矩阵中,非零元素非常少(远小于m×n),此时若仍采用二维数组顺序存放就不合适了,因为很多存储空间存储的都是0,只有很少的一些空间存放的是有效数据,这将造成存储单元很大的浪费。另外,还有一些矩阵其元素的分布有一定规律,我们可以利用这些规律,只存储部分元素,从而提高存储空间的利用率。上述矩阵叫做特殊矩阵。在实际应用中这类矩阵往往阶数很高,如2000×2000的矩阵。这种大容量的存储,在程序设计中,必须考虑对其进行有效的压缩存储。压缩原则是:对有规律的元素和值相同的元素只分配一个存储空间,对于零元素不分配空间。 下面介绍几种特殊矩阵及对它们进行压缩存储。 5.3.3稀疏矩阵 所谓的稀疏矩阵,从直观上讲,是指矩阵中大多数元素为零的矩阵。一般地,当非零元素个数只占矩阵元素总数的25%—30%,或低于这个百分数时,我们称这样的矩阵为稀疏矩阵。在图5.10所示的矩阵M,N中,非零元素个数均为8个,矩阵元素总数均为6×7=42,显然8/4230%,所以M,N都是稀疏矩阵。 一、稀疏矩阵的三元组表表示法: 对于稀疏矩阵的压缩存储,我们采取只存储非零元素的方法。但由于稀疏矩阵中非零元素aij的分布一般是没有规律的,因此,对于稀疏矩阵的压缩存储就要求在存储非零元素的同时,还必须存储一些辅助信息,即该非零元素在矩阵中所处的行号和列号。我们将这种存储方法叫做稀疏矩阵的三元组表示法。每个非零元素在一维数组中的表示形式 把这些三元组按“行序为主序”用一维数组进行存放,即将j矩阵的任何一行的全部非零元素的三元组按列号递增存放。由此得到矩阵M,N的三元组表,如图5.12所示: 稀疏矩阵的三元组表示法虽然节约了存储空间,但比起矩阵正常的存储方式来讲,其实现相同操作要耗费较多的时间,同时也增加了算法的难度。即以耗费更多时间为代价来换取空间的节省。三元组表的类型说明如下: #define MAXSIZE 1000 /*非零元素的个数最多为1000*/ typedef struct { int row, col; /*该非零元素的行下标和列下标*/ ElementType e; /*该非零元素的值*/ }Triple; typedef struct { Triple data[MAXSIZE+1]; /* 非零元素的三元组表。data[0]未用*/ int m, n, len; /*矩阵的行数、列数和非零元素的个数*/ }TSMatrix; 1.用三元组表实现稀疏矩阵的转置运算 下面首先以稀疏矩阵的转置运算为例,介绍采用三元组表时的实现方法。所谓

文档评论(0)

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

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

1亿VIP精品文档

相关文档