数据结构-第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章-数组

三角矩阵中重复元素c可共享一个存储空间,其余元素和对称矩阵一样正好有n(n+1)/2个,因此,三角矩阵可压缩存储到数组M[1:n(n-1)/2 + 1]中,其中c若非0,则存放到数组的最后一个下标变量中。 上三角矩阵中,主对角线上的第t行(1≤t≤n)有n-t+1个元素,按行优先顺序存放上三角阵中的元素aij时,aij之前的前i-1行的元素个数共有 ? 在第i行上,aij是该行的第j-i+1个元素,M[k]和aij的对应关系是 i≤j k= i>j 当i>j时,aij=c,c存放在M[ ]中,下三角矩阵的存储和对称矩阵类似。M[k]和aij的对应关系是: i≥j k= i<j 5.4 小结 数组是最常用的数据结构之一。在程序设计中,数组常被定义为存储数据的固有类型。数组一旦被建立,数组结构中的元素个数和元素之间的关系就不再发生变化,而且对于数组也不做插入和删除的操作。对于数组一般只有两种运算:① 给定一组下标,存取相应的数据元素;② 给定一组下标,修改相应位置中数据元素的值。对于数组,一旦确定了它的维数和各维的长度,便可以为其分配存储空间。反之,只要给出数组存放的起始地址、数组的行号和列号,以及每个数组元素所占用的存储单元,便可以求得给定下标的数组元素存储的位置。 在数组的实际应用中,经常会遇到以矩阵形式表示的二维数组,但其阶数很高,而且该矩阵有许多相同的元素或零元素。为了节省空间,可以对矩阵进行压缩存储。可以压缩存储的矩阵分为稀疏矩阵和特殊矩阵。 矩阵中零元素远远多于非零元素,并且非零元素的分布没有规律的矩阵称作稀疏矩阵,对于稀疏矩阵,可以将它的非零元素转化为三元组形式,并按行的次序排列起来。由三元组所形成的描述稀疏矩阵最大行号和列号以及非零元素下标位置和非零元素值的矩阵称为稀疏矩阵的特征矩阵,可以通过对特征矩阵的运算达到压缩稀疏矩阵和对稀疏矩阵进行运算的目的。 习题5 5.1 数组和线性表结构有什么相同和区别- 5.2 设有一数组A(1: 5,1: 10,1: 20),其元素在内存中按行主序存放。 (1) 若数组中每个数据元素占两个单元,则数组A需要多大的内存空间- (2) 若数组元素A(1,1,1)的向量地址为1000,则数组元素A(4,8,15)的内存地址是多少- 5.3 设有一数组B(2: 5,5: 8,4: 7),其元素在内存中按行主序存放。若每一个数组元素占一个单元,且数组元素A(2,5,4)的地址为2000,则数组元素A(4,7,5)的内存地址是多少- 5.4 有一稀疏矩阵A,请用特征矩阵Q来表示矩阵A。 ? 5.5 设稀疏矩阵A和B的特征矩阵分别为P和Q,试编写一个用P和Q实现A+B的算法,并对算法做简单分析。 5.6 有一对称矩阵A(1: 10,1: 10),假设以一维数组M作为对矩阵A的压缩存储结构,若每个数据元素占两个单元。 (1) 一维数组M需要多少存储空间,其下标如何表示- (2) 若有数据元素A(5,7),求该元素在M中的下标位置。 第5章 数组 第5章 数组 5.1 二维数组的顺序存储表示 5.2 稀疏矩阵的压缩 5.3 特殊矩阵的压缩 5.4 小结 习题5 5.1 二维数组的顺序存储表示 数组作为线性表的一种推广,其每一个元素都由一个值和一组下标组成。在数组中,对于每组定义的下标,都存在一个与此相对应的元素。如二维数组Am×n,可用m行n列的矩阵形式表示: 其中,每一个元素A(i, j)都和一个二维空间的数(i, j)(1≤i≤m,1≤j≤n)相对应。 对于数组,通常只有两种运算: (1) 给定一组下标,存取相应的数据元素。 (2) 给定一组下标,修改相应数据元素中的值。 例如,二维数组有两种顺序存储方法,一种是以行为主序的存储方法,如图5-1(b)所示,还有一种是以列为主序的存储方法,如图5-1(c)所示。在Basic﹑Pascal﹑Cobol﹑PL/1等语言中,用的都是以行为主序的存储结构,而在Fortran语言中,用的是以列为主序的存储结构。 图5-1 二维数组的两种顺序存储方法 (a)二维数组;(b)行主序;(c)列主序 数组的顺序分配是一种随机存取的存储结构,假设每个数据只占一个存储单元,并以行为主序说明多维数组

文档评论(0)

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

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

1亿VIP精品文档

相关文档