《数据结构与算法》_第5章 数组和广义表-PPT.pptxVIP

《数据结构与算法》_第5章 数组和广义表-PPT.pptx

  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.1数组;?;数组的存储结构

一维数组的存储结构:一维数组的存储结构与线性表的顺序存储结构类似。

二维数组的存储结构:存放二维数组或多维数组,就必须按照某种顺序将数组中的元素形成一个线性序列,然后将这个线性序列存放在内存中。

(1)行优先顺序存储

将数组元素按行向量的顺序存储,即第i+1行的元素存放在第i行的元素之后。元素存储的线性序列为a11,a12,…,a1n,a21,a22,…,a2n,…,am1,am2,…,amn

(2)列优先顺序存储

将数组元素按列向量的顺序存储,即第j+1列的元素存放在第j列的元素之后。元素存储的线性序列为a11,a21,…,am1,a12,a22,…,am2,…,a1n,a2n,…,amn

;已知二维数组存储的起始地址,下标的上、下界,以及每个数组元素所占用的存储单元个数,就可以计算出元素aij的存储地址,从而对数组元素随机存取。

二维数组A[c1..d1,c2..d2]按行优先的顺序存储在内存中,假设每个元素占d个存储单元,计算元素aij的地址公式:

Loc(aij)=Loc(ac1c2)+[(i-c1)×(d2-c2+1)+j-c2]×d

其中Loc(ac1c2)是数组的起始地址,元素aij前面的i-c1行中共有(i-c1)×(d2-c2+1)个元素,第i行上元素aij前面又有j-c2个元素。

二维数组A[c1..d1,c2..d2]按列优先的顺序存储在内存中,元素aij的地址计算公式:

Loc(aij)=Loc(ac1c2)+[(j-c2)×(d1-c1+1)+i-c1]×d

不难写出一维数组A[c..d]中元素ai的地址计算公式:

Loc(ai)=Loc(ac)+(i-c+1)×d

;【例5.1】假设二维数组按行优先的顺序存储,分别计算数组A[1..m,1..n]和A[0..m-1,0..n-1]中元素aij的地址。

(1)行下标的下界是1,上界是m;列下标的下界是1,上界是n。元素aij的地址是 Loc(aij)=Loc(a11)+[(i-1)×n+j-1]×d

(2)行下标的下界是0,上界是m-1;列下标的下界是0,上界是n-1。元素aij的地址是 Loc(aij)=Loc(a00)+(i×n+j)×d;5.2 特殊矩阵的压缩存储;用向量A[0..n(n+1)/2]压缩存储三角矩阵,其中A[0]~A[n(n+1)/2-1]存储矩阵的下(上)三角中的元素,向量的最后一个分量A[n(n+1)/2]存储三角矩阵中的常数。

如何根据矩阵元素的下标i、j,计算矩阵元素在一维数组中的下标k。

(1)下三角矩阵按行优先的顺序存储,A[k]与aij的对应关系为

(2)上三角矩阵按列优先的顺序存???,A[k]与aij的对应关系为

;【例】分别采用一维数组存储4阶下三角矩阵和上三角矩阵。;2、对称矩阵

若n阶方阵A中的元素关于主对角线对称,即满足下述性质:

则称A为对称矩阵。

如果采用一维数组存储矩阵中的上三角或下三角元素,使对称的两个元素共享同一个存储空间,可以节省近一半的存储空间。

可以用向量A[0..n(n+1)/2-1]压缩存储对称矩阵。

对于下三角部分的元素aij(ij),可以看作按行优先的顺序存储,A[k]与aij的对应关系为:

对于上三角部分的元素aij(ij),可以看作按列优先的顺序存储,A[k]与aij的对应关系为:;【例】一个4阶对称方阵,按行优先的顺序存储下三角矩阵,按列优先的顺序存储上三角矩阵。;3、对角矩阵

对角矩阵是指方阵中的所有非零元素集中在以主对角线为中心的带状区域内,带状区域之外的元素值均为零。

对角矩阵的带宽可以是3,5,7,...

带宽为3的对角矩阵又称为三对角矩阵。当|i-j|1时,元素aij为0。

一般地,对于k对角矩阵(k为奇数),当|i-j|(k-1)/2时,元素aij为0。

;n阶三对角矩阵有3n-2个非零元素,采用向量A[0..3n-3]按行优先的顺序压缩存储三对角矩阵。每个非零元素与向量下标的对应关系为;稀疏矩阵的定义:设矩阵Amn中有t个非零元素,若t远远小于矩阵元素的总数(即tm×n,),并且非零元素在矩阵中的分布没有规律,则称A为稀疏矩阵。

存储系数矩阵中的非零元素,除了存储元素值外,还必须存储该元素的位置信息。

通常对稀疏矩阵进行压缩存储可以采用顺序存储结构的三元组表或者链式存储结构的十字链表。;1、稀疏矩阵的三元组表存储

将稀疏矩阵中的非零元素的行号、列号和元素值作为一个三元组

(i,j,aij)

所有非零元素的三元组按行优先(或列优先)的顺序排列,便得到一个其结点均是三元组的线性表——三元组表。

三元组表的结构类型定义描述为

#defineMaxSi

您可能关注的文档

文档评论(0)

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

kd8w

1亿VIP精品文档

相关文档