- 1、本文档共67页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 一元二次方程应用之每每问题.ppt
- 一个有趣的专题.ppt
- 三 汽化和液化(教学内容).ppt
- 三 技术的未来.ppt
- 三)结构施工图.ppt
- 三上《玩出了名堂》教学课件.ppt
- 三下3.1温度和温度计胡小珍.ppt
- 三个方法让你学会邮件营销推广.pptx
- 三串联和并联5.ppt
- 三位数乘以两位数的应用题.pptx
- GB/T 34877.4-2024工业风机 标准实验室条件下风机声功率级的测定 第4部分:声强法.pdf
- 中国国家标准 GB/T 34877.4-2024工业风机 标准实验室条件下风机声功率级的测定 第4部分:声强法.pdf
- 中国国家标准 GB/T 5578-2024固定式发电用汽轮机规范.pdf
- GB/T 5578-2024固定式发电用汽轮机规范.pdf
- 《GB/T 5578-2024固定式发电用汽轮机规范》.pdf
- 《GB/T 4340.1-2024金属材料 维氏硬度试验 第1部分:试验方法》.pdf
- GB/T 4340.1-2024金属材料 维氏硬度试验 第1部分:试验方法.pdf
- 中国国家标准 GB/T 4340.1-2024金属材料 维氏硬度试验 第1部分:试验方法.pdf
- GB/T 43995-2024数字航天摄影测量 空中三角测量规范.pdf
- 中国国家标准 GB/T 43995-2024数字航天摄影测量 空中三角测量规范.pdf
文档评论(0)