济南大学数据结构 第五章.docxVIP

  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文档。上传文档
查看更多
第五章 数组和广义表 数组和广义表均是元素为复合结构的线性结构。 数组的定义以二维数组为例, 二维数组通常可以描述为两种形式 : 以行序为主序: PASCAL、C 可以看成 A = ( α ,α , . . .,α )T 0 1 m-1 其中 α 是一个行向量形式的线性表,0≤i≤m-1 i α = ( a ,a , . . . ,a ) i 0 i 1 i n-1 以列序为主序: FORTRAN 可以看成 A = ( α ,α ,……,α ) 0 1 n-1 其中 α 是一个列向量形式的线性表,0≤j≤n-1 j α = ( a ,a ,……,a )T 0 j 1 j m-1j 数组的表示和实现 数组一旦被定义,其维数和维界就不再改变,故通常采用 顺序存储结构。如何将多维数组结构转换对应一组连续的存储单元? 以列序为主序 以行序为主序 对于数组,一旦规定了维数和维界,如何计算数组元素的存储位置? 设数组以行序为主序。 二维数组 A[m][n] 数组元素 aij 的存储位置为 LOC(i,j) =LOC(0,0) + ( n×i + j ) L LOC(0,0)是 a 的存储位置; 00 L 是每个数组元素占用的存储单元数; 例 ,LOC(1,1) =LOC(0,0) + ( n×1 + 1 ) L 三维数组 A ( b1,b2,b3 ) 000LOC(0,0,0)是 a 000 的存储位置; L 是每个数组元素占用的存储单元数; LOC(1,1,1) = LOC(0,0,0) + ( b2×b3×1 + b3×1 + 1 ) L 数组元素 a ijk 的存储位置为 : nLOC(i,j,k) = LOC(0,0,0) + ( b2×b3×i + b3×j + k ) L n b1维数组A ( b , b 1 ,… , b2 b )的元素存储位置可计算为: 2nLOC(j1,j ,…… ,j ) 2 n = LOC(0,0,…… ,0) + ( b ×……×b ×j + b ×……×b ×j +…… + b ×j + j ) L 2 n 1 3 n 2 n n 矩阵的压缩存储 矩阵元素如何存储? 通常利用二维数组来存储矩阵元素。 B[m][n] a i j b i-1,j-1 实际中,存在许多特殊矩阵,例如在矩阵中有许多值相同的元素或者零元素。 用定长数组存储造成浪费。 为了节省存储空间,需要对这类矩阵进行压缩存储。 压缩存储是指为多个值相同的元素只分配一个存储空间;对零元素不分配空间。 对称矩阵 三角矩阵 对角矩阵 稀疏矩阵 n 阶对称矩阵 n 阶矩阵 A 满足: ai j = aj i 通常表示为: n2 个矩阵元素只需占用 n(n+1)/2 个存储空间 设计用一维数组 SA[n(n+1)/2] 存储 n 阶对称矩阵 A 。 ij关键问题: 如何建立数组元 SA[k] 和矩阵元 a 之间的一一对应关系。 ij K 一定是 i ,j 的函数 a i + b j + c = a i + j + c = a n + 1 + c = a= , b=1 , c=-1 三角矩阵 所谓下(上)三角矩阵是指矩阵的上(下)三角(不包括对角线)中的元均为常数 c 的 n 阶矩阵。 下三角矩阵 和对称矩阵基本一样,只需除存储其下(上)三角中的元之外,再增加一个存储单 元存放 c 。 关键问题: 如何建立数组元 SA[k] 和矩阵元 aij 之间的一一对应关系。 对角矩阵 所有的非零元都集中在以主对角线为中心的带状区域中。 一般情况 三对角矩阵 关键问题: 如何建立数组元 SA[k] 和矩阵元 aij 之间的一一对应关系。 K 一定是 i ,j 的函数 a i + b j + c = a i + j + c = a (n-1) + (n-2) + c = 3n-7 代入解得:a=2 , b=1 , c=-3 K = 2i + j - 3 (| i - j | ≤ 1) 作业: 五对角矩阵 稀疏矩阵 非零元很少的矩阵。 稀疏因子: 设 m×n 的矩阵,有 t 个非零元,令 通常认为 δ≤ 0.05 时称为稀疏矩阵。稀疏矩阵的压缩存储 三元组顺序表 行逻辑链接顺序表 十字链表三元组顺序表 ij三元组( i ,j ,a )表示非零元素 ij i 行数,j 列数,a 非零元。 ij 广义表的定义 1广义表(列表) LS = ( a 1  aa), , , a a ) 2 n LS : 列表名称 n : 列表长度(元素的个数) ia : 可以是单个数据,也可以是子列表,分别称为原子和子表。 i 1a : LS 的表头(第一个元素)。 1 ( a2 , , , aa3 n a a ) : LS 的表尾(列表)。

文档评论(0)

tianya189 + 关注
官方认证
文档贡献者

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

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档