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

算法与数据结构-数组第5章.ppt

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 数组和广义表 5.1 数组的定义及其基本操作 5.2 数组的顺序存储 5.3 矩阵的压缩存储 5.3.1 特殊矩阵 5.3.2 稀疏矩阵 5.4 广义表 第5章 数组和广义表 数组和广义表逻辑上是线性结构的推广。 数组是以元素为线性表的线性结构,而且元素的结构相同; 广义表是一种线性结构的推广,其元素的结构可以不同。 高级语言中的数组 char a[10]; int a[3][3]; 三个变量组成的一个数组,其中每一个变量都是数组。 5.1数组的定义 定义: 是由结构相同的数据元素构成的有序集合; 每个元素受n个线性关系的约束; 每个元素对应一个(一组)下标,可以 通过下标访问该数据元素。 下标可以是多维的,每一维下标是连续的,可数的,有限的序列。具有相同的上限和下限。 n(n>1)维数组可看作是一个向量,它的每个元素是n-1维数组,且具有相同的上限和下限 。 二维数组中的每个元素都属于两个向量:第i行的行向量和第j行的列向量。 每个元素有两个前驱结点ai-1,j和ai,j-1及两个后继结点ai+1,j和ai,j+1。(只要这些结点存在)。 数组的抽象数据类型 ADT Array{ 数据对象:ji=0,…,bi-1,i=1,2,…,n, D={aj1j2…,jn|n(0)称为数组的维数,bi是数组 第i维的长度,ji是第i维的下标, aj1j2…,jn ElemSet} 数据关系: 1≤jk≤bk,1≤k≤n且k≠i,1≤ji≤bi-1 基本操作: ArrayInit(A,n,bound1..boundn) ArrayValue(A,index1,…,indexn) ArrayAssign(A,e,index1,…,indexn) }ADT Array 数组的操作 数组一般不做插入和删除操作 对于数组的操作一般只有两类: (1) 给定一组下标,存取相应的数据元素 (2) 给定一组下标,修改相应的数据元素的值。 5.2 数组的顺序存储 组成数组的元素可以是多维的 内存单元地址是一维的 数组顺序存储时,可以有两种存储方式: 行序为主存储:BASIC/PASCAL/C语言 列序为主存储:FORTRAN语言 数组的顺序存储 以行序为主序存储的数组 设二维数组A[c1…d1,c2…d2] (c1≤i≤d1,c2≤j≤d2) 每个数组元素占L个存储单元,设第一个元素A[c1][c2]的存储位置为LOC(c1,c2), 则该二维数组中任一元素A[i][j]的存储位置可由下式确定: LOC(i,j)=LOC(c1,c2)+[(i-c1)*(d2-c2+1)+(j-c2)]*L 在C语言中,下标从零开始,则数组元素A[i][j]的存储位置是 LOC(i,j)=LOC(0,0)+(i*(d2+1)+j)*L 思考: 以列序为主序的存储结构如何得到元素的地址? N维数组A[c1…d1,c2…d2,…,cn,…dn]如何求得任意元素aj1,j2,…jn的地址? 二维数组与矩阵 二维数组也称矩阵; 行列数相等的矩阵称为方阵。 矩阵的压缩存储 压缩存储:对多个值相同的元素分配一个存储空间,对零元素不分配空间。 两类矩阵: 特殊矩阵:非零元素分布有一定的规律; 稀疏矩阵:非零元素少(一般认为小于5%)且分布无规律; 特殊矩阵(对称矩阵) 对称矩阵 若n阶矩阵A中的元素满足下述性质 aij=aji 0≤i , j≤n-1 则称A为n阶对称矩阵 n2个元素可以压缩到n(n+1)/2个空间中; 以行序为主序将其下三角(包括对角线)中的元素存储到一个向量B[n(n+1)/2]中: 特殊矩阵(对称矩阵) B[k]与矩阵中的元素aij之间存在一一对应关系: 若令I=max(i,j),J=min(i,j);则其对应关系可以表示为: aij的地址可以用下式计算: 特殊矩阵(三角矩阵 ) 三角矩阵 :下三角矩阵是指矩阵的上三角(不包括对角线)中的元素均为常数c或零的n阶矩阵 除了和对称矩阵一样存储其上(下)三角矩阵之外,再加一个存储常数c的存储空间即可。 因此,三角矩阵可压缩到向量B[n*(n+1)/2

文档评论(0)

好文精选 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档