数据结构5章.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构5章

第5章 数组和广义表 学习目标与要求: 了解数组的概念及基本操作。 掌握二维数组的行主序和列主序两种存储方式。 了解特殊矩阵的特点并掌握特殊矩阵的存储形式及基本运算。 了解广义表的概念及相关术语。 掌握广义表的存储形式。 数组 数组是一种扩展的线性数据结构。线性表、栈、队列、串的数据元素都是不可再分的原子类型,而数组中的数据元素是可以再分的。数组可以分为一维数组和多维数组,一维数组中的元素是由原子构成的,多维数组中的元素又是一个线性表。因此,数组是一种特殊的线性表。 5.1 数组的定义 数组是由n个类型相同的数据元素组成的有限序列。其中,这n个数据元素占用一块地址连续的存储空间。数组中的数据元素可以是原子类型的,如整型、字符型、浮点型等,这种类型的数组称为一维数组;也可以是一个线性表,这种类型的数组称为二维数组。二维数组可以看成是线性表的线性表。 5.1 数组的定义 一个含有n个元素的一维数组可以表示成线性表A=(a0,a1,…,an-1)。其中,ai(0=i=n-1)是表A中的元素,表中的元素个数是n。 一个m行n列的二维数组可以看做一个线性表,其中数组中的每个元素也是一个线性表。 5.1 数组的定义 5.1 数组的定义 同理,一个n维数组也可以看做是一个线性表,其中线性表的每个数据元素是n-1维的数组。n维数组中的每个元素处于n个向量中,每个元素有n个前驱元素,也有n个后继元素。 5.1 数组的定义 数组是一个具有固定格式和数量的数据有序集,每一个数据元素有唯一的一组下标来标识。 对于数组,一般不做插入、删除操作,不移动元素,其基本操作如下。 (1) Getvalue(A, e, index1, …, indexn):若下标合法,则用e返回数组A中由index1, …, indexn下标所指定的元素的值。即给出一组下标,取相应的数据元素。 (2) Setvalue(A, e, index1, …, indexn):若下标合法,则将数组A中由index1, …, indexn所指定的元素的值置为e。即给定一组下标,修改相应数据元素中的某一个或几个数据项的值。 5.2 数组的顺序存储结构 在计算机中,内存储器的结构是一维的。用一维的内存表示多维数组,就必须按某种次序将数组元素排成一个线性序列,然后将这个线性序列存放在存储器中。 5.2 数组的顺序存储结构 数组的存储方式有两种:一种是以行序为主序的存储方式,另一种是以列序为主序的存储方式。 二维数组A以行序为主序的存储顺序为a0,0,a0,1,...,a0,n-1,a1,0,a1,1,...,a1,n-1,...,am-1,1,...,am-1,n-1 以列序为主序的存储顺序为 a0,0,a1,0,...,am-1,0,a0,1,a1,1,...am-1,1,...,a0,n-1,...,am-1,n-1 数组A在计算机中的存储形式如图所示: 5.2 数组的顺序存储结构 如果给定了数组的维数和各维的长度,就可以为数组分配存储空间。如果给定数组的下标,就可以求出相应数组元素的存储位置。 每个元素的存储位置可以通过数组各维的界偶、第一个元素的存放地址、元素的下标和每个元素在内存中占用的单元数计算得出。 5.2 数组的顺序存储结构 下面以行序为主序 说明数组在内存中的存储地址与数组的下标之间的关系。假设数组中的每个元素占L个存储单元,则二维数组A中的任何一个元素aij的存储位置可以由以下公式确定 Loc(i,j)=Loc(0,0)+(i*n+j)*L 其中,Loc(i,j)表示元素aij的存储地址,Loc(0,0)表示元素a00的存储地址,即二维数组的起始地址或基地址。 5.2 数组的顺序存储结构 下面总结一下数组中计算元素地址的方法。 1. 一维数组 假设一维数组a[t]每个元素占s个存储单元,并且从地址a开始一次分配各元素,则有: LOC(a[i])=LOC(a[0])+i*s=a+i*s 5.2 数组的顺序存储结构 下面总结一下数组中计算元素地址的方法。 2. 二维数组 1) 以行序为主序的存储分配 2) 以列序为主序的存储分配 5.2 数组的顺序存储结构 1) 以行序为主序的存储分配LOC(aij)=LOC(a00)+(i*n+j)*s=a+(i*n+j)*s 5.2 数组的顺序存储结构 2) 以列序为主序的存储分配 LOC(aij)=LOC(a00)+(j*m+i)*s=a+(j*m+i)*s 5.3 矩阵的压缩存储结构 矩阵是许多科学与工程计算中经常遇到的问题,在高级语言中,通常使用二维数组来存储矩阵。然而,在矩阵的运算中,往往会出现阶数很高的矩阵中

文档评论(0)

ipad0d + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档