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

第五章数据结构-数组与广义表第五章数据结构-数组与广义表.ppt

第五章数据结构-数组与广义表第五章数据结构-数组与广义表.ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2000年1月25日 北京理工大学 / 引 无论在数值计算抑或非数值计算中数组均有广泛的应用,因此,绝大多数高级语言都将数组设定为固有数据类型,提供数组的定义和操作方法.如C语言中 int a[4][5]; a[1][1]=2 本章一方面以抽象数据类型的的角度讨论数组的定义和实现(广义线性表),加深对数组的理解;另一方面,讨论一些特殊结构的矩阵(如稀疏矩阵)的定义和存储表示方法 第五章 数组和广义表 : 5.2 数组的顺序表示和实现 说明: 5.3 矩阵的压缩存储 5.3 矩阵的压缩存储 5.3.2 稀疏矩阵(SparseMatrix) 1、静态分配的三元组顺序表存储结构 矩阵转置在三元组顺序表中的实现B=AT TransposSMatrix(M,T) 稀疏矩阵的十字链表表示: 小结: 对称矩阵、上/下三角矩阵、对角矩阵的压缩存储与下标计算 稀疏矩阵的三元组顺序存储表示与(快速)转置操作 了解稀疏矩阵的十字链表表示 作业7三对角矩阵A[n][n],非零元逐行存储到一维数组B[3n-2]中,问ij到k及k到ij变换公式 推荐:1 2 5 6 7 8 21 25 2000年1月25日 北京理工大学 / 上页 下页 节 末页 结束 2000年1月25日 北京理工大学 / 5.1 数组的定义 5.2 数组的顺序表示和实现 5.3 特殊矩阵的压缩存储 5.4—5.7 广义表的定义/存储与表示 5.1 数组的定义 ADT Array { 数据对象:D={aj1,j2,...jn|n为维数,设第i维长度为bi,则ji =0..bi-1} 数据关系:R={R1, R2, ..., Rn} //Ri代表第i维上的相邻关系 Ri={aj1,.(ji),.jn , aj1..(ji+1)..jn | 0≤jk≤ bk-1, 0≤ji≤bi-2…} 基本操作: InitArray(A,n,bound1,...,boundn) //n为维数,boundi为第i维长度 DestroyArray(A) Assign(A, e, index1, ..., indexn) //将指定下标的元素赋值为e Value(A, e, index1, ..., indexn) //用e返回指定下标的元素的值 }//ADT Array 普通数组的各项操作都不会引起元素的插入或删除,故数组常采用顺序存储结构 高维数组是个多维的结构,而存储空间是顺序编址的一维结构,如何存储多维数组呢? a0,1 a0,0 a0,2 a1,0 a1,1 a1,2 a12 a11 a10 a02 a01 a00 a12 a02 a11 a01 a10 a00 行优先,以行为主序,如C/Basic 列优先,以列为主序,如Fortran 数组为随机存取结构,以下标从零开始的二维数组为例,在以行序为主的存储结构中aij的存储地址Loc(i,j): Loc(0,0)+(i*b2+j)*sizeof(ElemType) 其中b2为一行中元素个数即第二维长度 对以列序为主的存储结构或者更高维的数组,元素的存储地址类似可得 数组操作的具体实现各语言不同,如下标越界的检查,此处不作要求 二维数组可以看作一种特殊的一维数组,该一维数组的每个元素又是一个一维数组(如原二维数组的一行)。例如C中二维数组“float b[3][4]” 可看作是由b[0]、b[1]和b[2]组成的一维数组,而b[0]可以看作由首行元素b[0][0]、b[0][1]、b[0][2]和b[0][3]组成的一维数组,b[1]与b[2]类似。Fortran或更高维的数组类似 b[0] b[1] b[2] = = = b[0][0] b[1][0] b[2][0] b[0][1] b[1][1] b[2][1] b[0][2] b[1][2] b[2][2] b[0][3] b[1][3] b[2][3] b typedef elemtype array_2[m][n]; 等价于: typedef elemtype array_1[n];//行 typedef array1 array_2[m]; 数组可看作普通线性表的一个推广,表中的每个数据元素本身又是一种线性表数据结构 5.3.1 特殊矩阵---对称矩阵 1 5 1 3 7 a11 * * … *

您可能关注的文档

文档评论(0)

cduutang + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档