- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
栾尚敏 第五章 数组和广义表 5.1 数组的定义 5.1 数组的定义 5.1 数组的定义 5.1 数组的定义 5.1 数组的定义 InitArray(A, n, bound1, ..., boundn) 若维数 n 和各维长度合法,则构造相应的数组 A。 DestroyArray(A) 如果数组 A 已经存在,则销毁数组 A。 Value(A, e, index1, ..., indexn) 若各下标不超界,则e赋值为所指定的A的元素值,并返回OK。 Assign(A, e, index1, ..., indexn) 若下标不超界,则将 e 的值赋给A中指定下标的元素。 } ADT Array 5.1 数组的定义 5.1 数组的定义 5.2 数组的顺序表示和实现 5.2 数组的顺序表示和实现 5.2 数组的顺序表示和实现 5.2 数组的顺序表示和实现 5.2 数组的顺序表示和实现 5.2 数组的顺序表示和实现 5.2 数组的顺序表示和实现 5.2 数组的顺序表示和实现 5.2 数组的顺序表示和实现 5.1 数组的定义 5.2 数组的顺序表示和实现 5.4 广义表 5.3 矩阵的压缩存储 数组是由n(n1)个具有相同数据类型的数据元素a1,a2,…,an组成的有序序列,且该序列必须存储在一块地址连续的存储单元中。 数组中的数据元素具有相同数据类型。 数组是一种随机存取结构,给定一组下标,就可以访问与其对应的数据元素。 数组中的数据元素个数是固定的。 以二维数组为例讨论。将二维数组看成是一个定长的线性表,其每个元素又是一个定长的线性表。 设二维数组A=(aij)m?n,则 A=(?1,? 2,…, ?p) (p=m或n) 其中每个数据元素 ?j是一个列向量(线性表) : ?j =(a1j ,a2j ,…,amj) 1≦j≦n 或是一个行向量: ?i =(ai1 ,ai2 ,…,ain) 1≦i≦m 直观上看n维数组:数组可以看成是一种特殊的线性表,即线性表中数据元素本身也是一个线性表 a11 a12 … a1n a21 a22 … a2n … … … … … am1 am2 … amn A= … … … … … A= a11 a12 … a1n a21 a22 … a2n am1 am2 … amn a11 a21 am1 a12 a22 am2 a1n a2n amn A= (a) 矩阵表示形式 (b)行向量的一维数组形式 (c) 列向量的一维数组形式 … ADT Array{ 数据对象:ji= 0,1,…,bi-1 , i = 1,2, …,n ; D = { aj1j2…jn | n0称为数组的维数,bi是数组第i维的长度,ji是数组元素第i维的下标,aj1j2…jn?ElemSet } 数据关系:R = {R1, R2, …, Rn} Ri={aj1j2 …ji…jn , aj1j2 …ji+1…jn|0?jk?bk-1 ,1 ? k?n且k≠i,0?ji?bi-2, aj1j2 …ji+1…jn?D } 基本操作: 抽象数据类型定义 数组一般不做插入和删除操作,也就是说,数组一旦建立,结构中的元素个数和元素间的关系就不再发生变化。因此,一般都是采用顺序存储的方法来表示数组 思考题:和C语言中数组进行比较 计算机的内存结构是一维(线性)地址结构,对于多维数组,将其存放(映射)到内存一维结构时,有个次序约定问题。即必须按某种次序将数组元素排成一列序列,然后将这个线性序列存放到内存中。 二维数组是最简单的多维数组,以此为例说明多维数组存放(映射)到内存一维结构时的次序约定问题。 通常有两种顺序存储方式 ⑴ 行优先顺序(Row Major Order) :将数组元素按行排列,第i+1个行向量紧接在第i个行向量后面。对二维数组,按行优先顺序存储的线性序列为: a11,a12,…,a1n, a21,a22,…a2n ,……, am1,am2,…,amn PASCAL、C是按行优先顺序存储的,如图5-2(b)示。 ⑵ 列优先顺序(Column Major Order) :将数组元素按列向量排列,第j+1个列向量紧接在第j个列向量之后,对二维数组,按列优先顺序存储的线性序列为: a11,a21,…,am1, a12,a22,…am2, ……, an1,an2,…,
原创力文档


文档评论(0)