网站大量收购独家精品文档,联系QQ:2885784924

第四章数组-DSQCW.ppt

  1. 1、本文档共90页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章数组-DSQCW.ppt

第五章 数组和广义表 ⒈教学内容: 5.1 多维数组 5.2 特殊矩阵的压缩存储 5.3 稀疏矩阵 5.4 广义表 ⒉教学目的: ⑴理解多维数组的结构特点和在内存中的两种顺序存储方式; ⑵理解并掌握矩阵和特殊矩阵元素在存储区中地址的计算; ⑶领会稀疏矩阵的压缩方式和简单运算; ⑷了解广义表的定义和基本运算。 第五章 数组和广义表 ⒊教学重点: ⑴多维数组的逻辑结构; ⑵多维数组的两种顺序存储方式,计算给定元素在存储区中的地址; ⑶对称矩阵、三角矩阵的压缩存储方式; ⑷稀疏矩阵的三元组表表示方法。 ⒋教学难点: 稀疏矩阵的压缩存储表示下的运算的实现 5.1 多维数组 数组的逻辑结构 数组的内存映象 5.1.1 数组的逻辑结构 数组是我们熟悉的一种数据结构,可以看作线性表的推广。数组作为一种数据结构其特点是结构中的元素本身可以是具有某种结构的数据,但属于同一数据类型,比如:一维数组可以看作一个线性表,二维数组可以看作“数据元素是一维数组”的一维数组,三维数组可以看作“数据元素是二维数组”的一维数组,依此类推。 数组是一个具有固定格式和数量的数据有序集,每一个数据元素有唯一的一组下标来标识,因此,在数组上不能做插入、删除数据元素的操作。通常在各种高级语言中数组一旦被定义,每一维的大小及上下界都不能改变。 类型特点: 1) 只有引用型操作,没有加工型操作; 2) 数组是多维的结构,而存储空间是 一个一维的结构。 在数组中通常做下面两种操作: (1) 取值操作:给定一组下标,读其对应的数据元素。 (2) 赋值操作:给定一组下标,存储或修改与其相对应的数据元素。 我们着重研究二维和三维数组,因为它们的应用是广泛的,尤其是二维数组。 5.1.2 数组的内存映象 通常,数组在内存中被映象为向量,即用向量作为数组的一种存储结构,这是因为内存的地址空间是一维的,数组的行列固定后,通过一个映象函数,则可根据数组元素的下标得到它的存储地址。 对于一维数组按下标顺序分配即可。 对多维数组分配时,要把它的元素映象存储在一维存储器中,一般有两种存储方式:一是以行为主序(或先行后列)的顺序存放,如BASIC、PASCAL、COBOL、C等程序设计语言中用的是以行为主的顺序分配,即一行分配完了接着分配下一行。另一种是以列为主序(先列后行)的顺序存放,如FORTRAN语言中,用的是以列为主序的分配顺序,即一列一列地分配。 以行为主序的分配规律是:最右边的下标先变化,即最右下标从小到大,循环一遍后,右边第二个下标再变,…,从右向左,最后是左下标。以列为主序分配的规律恰好相反:最左边的下标先变化,即最左下标从小到大,循环一遍后,左边第二个下标再变,…,从左向右,最后是右下标。 有两种顺序映象的方式: 1)以行序为主序(低下标优先); 2)以列序为主序(高下标优先)。 例如一个2×3二维数组,逻辑结构可以用左图表示。以行为主序的内存映象如右图(a)所示。 分配顺序为:a11 ,a12 ,a13 ,a21 ,a22 ,a23 ;以列为主序的分配顺序为:a11 ,a21 ,a12 ,a22 ,a13  ,a23 ;它的内存映象如右图(b)所示。 设有m×n二维数组Amn,按元素的下标求其地址: 以“以行为主序”的分配为例:设数组的基址为LOC(a11),每个数组元素占据L个地址单元,那么aij 的物理地址可用一个线性寻址函数计算: LOC(aij) = LOC(a11) + ( (i-1)*n + j-1 ) * L 称为基地址或基址。 在C语言中,数组中每一维的下界定义为0,则: LOC(aij) = LOC(a00) + ( i*n + j ) * L 推广到一般的二维数组:A[c1..d1] [c2..d2],则aij的物理地址计算函数为: LOC(aij)=LOC(a c1 c2)+( (i- c1) *( d2 - c2 + 1)+ (j- c2) )*L 同理对于三维数组Amnp,即m×n×p数组,对于数组元素aijk其物理地址为: LOC(aijk)=LOC(a111)+( ( i-1) *n*p+ (j-1)*p +k-1)*L 推广到一般的三维数组:A[c1..d1] [c2..d2] [c3..d3],则aijk的物理地址为: LOC(i,j)=LOC(

您可能关注的文档

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档