数据结构数组.pptVIP

  1. 1、本文档共48页,可阅读全部内容。
  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文档。上传文档
查看更多
数据结构数组

第四章 数 组 陈 元 忠 主要内容 数组的逻辑结构 数组的存储方式及寻址方法 特殊矩阵和稀疏矩阵的压缩存储方法 第一节 数组的顺序存贮 线性表有两种基本存贮方式,一种是顺序存贮,另一种是非顺序存贮 数组是由一组类型相同的数据元素构成的有序集合,每个数据元素称为一个数组元素(简称为元素),每个元素受n(n≥1)个线性关系的约束,每个元素在n个线性关系中的序号i1、i2、…、in称为该元素的下标,并称该数组为 n 维数组。 数组的存储结构 数组的顺序存储结构,是指用计算机中的一组地址连续的存储单元,按照一定的先后次序来依次存放一个数组中各个数据元素的值 数组的地址公式 我们可以根据一个数组元素的下标的各个值来计算出它在计算机中存储单元的地址,这样进行读写运算就方便了;计算数组元素存储单元地址的公式叫做地址计算公式,下面我们将给出一维、二维、三维数组的地址公式。(假定:每个数组元素占计算机中L个存储单元)。 一维和二维数组 一维数组 二维数组 数组可以看成是一种特殊的线性表,即线性表中数据元素本身也是一个线性表,数组中各元素具有统一的类型。 数组的基本操作 由于一旦建立了数组,数组中的数据元素个数和数据元素之间的关系就不能再发生变化,所以不会有元素的插入和删除等操作,其基本操作主要是元素的读取和更新。 (1)读取操作value(a,index1,index2,…)。其功能是返回由下标index1、index2、…确定的数组A的对应元素值。 (2)更新操作assign(a,e,index1,index2,…)。其功能是将e的值赋给数组A中下标为index1、、index2、…的元素。 (3)输出操作print(a)。其功能是输出数组A的全部元素 等其它操作 二维数组Am×n的行优先存储方式和列优先存储方式 数组存储结构 假设每个数据元素占L个字节,则二维数组Am×n的数组元素aij的存储地址应是数组的基地址加上排在aij前面的元素所占用的字节数。因为aij所在行的前面有i行,含有i×n个元素,在第i行上排在aij前面又有j个元素,故它前面一共有i×n+j个元素,因此,aij的地址计算公式为: LOC(aij)=LOC(a00)+(i×n+j)×L 其中,LOC(aij)是数组元素aij的存储位置;LOC(a00)是数组中第一个元素a00的存储位置,即二维数组A的基地址或简称基址。 数组存储结构 三维数组a[m1][m2][m3]将其中的每一个元素映射到一维数组的某一个位置,数组元素a[i1][i2][i3]的存储地址: Loc(a[i1][i2][i3])=a+i1*m2*m3+i2*m3+i3 n维数组 将其中的每一个元素映射到一维数组的某一个位置,各维元素个数为 m1, m2, m3, …, mn,下标为 i1, i2, i3, …, in 的数组元素的存储地址: 矩阵的压缩存储 特殊矩阵:矩阵中很多值相同的元素并且它们的分布有一定的规律。 稀疏矩阵:矩阵中有很多零元素 将下三角压缩存储在一维数组a中的4×4阶对称矩阵按矩阵格式输出。 print(int a[]) { int i,j; for(i=0;i4;i++) { for(j=0;j4;j++) if(i=j) printf(%4d,a[i*(i+1)/2+j]); else printf(%4d,a[j*(j+1)/2+i]); printf(\n); } 三角矩阵和带状矩阵 第二节 稀疏矩阵 矩阵Am×n中的非零元素个数t相对于矩阵元素的总个数m×n相当小,且非零元素的分布没有任何规律 每一个非零元素由一个三元组(i,j,aij)唯一确定 用三元组表示稀疏矩阵 稀疏矩阵A对应的行序三元组线性表为: ((0,1,12),(0,2,9),(2,0,3),(2,5,1),(3,2,24),(4,1,18),(5,0,5),(5,3,7)) 0 12 9 0 0 0 0 0 0 3 0 0 5 0 0 0 0 0 0 0 12 0 0 0 18 0 A= 3 0 0 0 0 1 0 9 0 0 24 0 0 0 0 24 0 0 0 0 B= 0 0 0 0 0 7 0 18 0 0 0 0 0 0 0 0 0 0 0 5 0 0 7 0 0 0 0

文档评论(0)

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

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

1亿VIP精品文档

相关文档