三元组顺序表矩阵表示.ppt

  1. 1、本文档共67页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构 第5章 数组与广义表 第5章 数组和广义表 5.1 数组的定义 5.2 数组的顺序表示和实现 5.3 矩阵的压缩存储 5.4 广义表的定义 5.5 广义表的存储结构 5.6 m元多项式的表示 5.7 广义表的递归算法 5.1 数组的定义 ADT Array {  数据对象: D={aj1,j2,...,ji ,...jn |ji =0,...,bi-1, i=1,2,..,n,         称 n(0) 为数组的维数, bi为数组第 i 维的长度,ji为数组元素的第i维下标,aj1,...,jn ∈ElemSet }  数据关系: R={R1, R2, ..., Rn}, Ri={aj1 ,...ji ,...jN , aj1 ,...,ji+1,...,jN | 0≤jk≤bk-1, 1≤k≤n 且k i, 0≤ji≤bi-2, aj1 ,...,ji ,...,jn , aj1 ,...ji+1,...,jn ∈D, i=2,...,n } 5.1 数组的定义 基本操作:  InitArray(A, n, bound1, ..., boundn)   操作结果:若维数 n 和各维长度合法,则构造相应的数组 A。  DestroyArray(A)   初始条件:数组 A 已经存在。   操作结果:销毁数组 A。  Value(A, e, index1, ..., indexn)   初始条件:A 是 n 维数组,e 为元素变量,随后是 n 个下标值。   操作结果:若各下标不超界,则e赋值为所指定的A的元素值,并返回OK。  Assign(A, e, index1, ..., indexn)   初始条件:A 是 n 维数组,e 为元素变量,随后是 n 个下标值。   操作结果:若下标不超界,则将 e 的值赋给A中指定下标的元素。 } ADT Array 5.2 数组的顺序表示和实现 由于数组类型不作插入和删除的操作,因此只需要通过顺序映象得到它的存储结构,即借助数据元素在存储器中的相对位置来表示数据元素之间的逻辑关系。 通常有两种映象方法:即“以行(序)为主(序)“row-major的映象方法和”以列(序)为主(序)“ column-major 的映象方法。 将多维数组映射到一维数组的方法 representations of a multidimensional array 5.2 数组的顺序表示和实现 以二维数组 a[ m, n]为例,其在内存中的映像 既可以如下排列(行优先): a00, a01, …, a0,n-1,a10,a11,…,a1,n-1,…am-1,0,…am-1,n-1 也可以如下排列(列优先): a00, a10, …, am-1,0,a01,a11,…,am-1,1,…a0,n-1,…am-1,n-1 5.2 数组的顺序表示和实现 假设二维数组 R[m][n] 中每个数据元素占L个存储地址,并以 LOC(i,j) 表示下标为 (i,j) 的数据元素的存储地址,则该数组中任何一对下标 (i,j) 对应的数据元素在以行为主的顺序映象中的存储地址为:    LOC(i,j) = LOC(0,0) + (i*n+j)*L   在以列为主的顺序映象中的存储地址为:    LOC(i,j) = LOC(0,0) + (j*m+i)*L   其中 LOC(0,0) 是二维数组中第一个数据元素(下标为(0,0))的存储地址,称为数组的 基地址 或基址。 5.2 数组的顺序表示和实现 类似地,假设三维数组 R[p][m][n] 中每个数据元素占 L 个存储地址,并以 LOC(i,j,k) 表示下标为(i,j,k) 的数据元素的存储地址,则该数组中任何一对下标(i,j,k) 对应的数据元素在以行为主的顺序映象中的存储地址为:    LOC(i,j,k) = LOC(0,0,0) + (i×m×n + j×n+k)×L 5.2 数组的顺序表示和实现 templateclass T class Array1D { friend ostream operator (ostream, const Array1DT); public: Array1D(int size = 0); Array1D(const Array1DT v); // copy constructor ~Array1D() {delete [] element;} T operator[](int i) const; int Size() {return size;} Array1DT operato

文档评论(0)

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

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

1亿VIP精品文档

相关文档