数据结构教程(简答易懂)第四章.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构教程(简答易懂)第四章

南京信息职业技术学院 计算机基础教研室 南京信息职业技术学院 计算机基础教研室 第四章 数 组 基本要求 了解数组的顺序存储方式; 理解下三角矩阵、对称矩阵、三角和对角矩阵压缩存储原理; 掌握稀疏矩阵的三元组压缩存储。 4.1 数组的顺序存储 4.1.1 二维数组逻辑结构 矩阵Am×n可以用数组A[m-1][n-1]来表示 4.1.2 数组的顺序存储 矩阵用二维数组顺序存放 按行存储 按列存储 二维数组元素的地址计算 设每个数组元素用L个字节存储,元素A[i][j]的地址为ADR(i,j),则按行存储时寻址公式为: ADR (i,j) = ADR (0,0) + (n * i + j ) * L 其中, 0i≤m-1, 0j≤n-1 二维数组元素的地址计算 按列存储时寻址公式为: ADR (i,j) = ADR (0,0) + (m * j + i ) * L 其中, 0i≤m-1, 0j≤n-1 例:设有整型数组a[7][7],按行存储,其首地址ADR[0][0]=2000,求元素a [4][5]的地址。 4.2 规则矩阵的压缩 规则矩阵 4.2.2 规则矩阵的压缩 压缩存储 给多个相同的元素只分配一个存储空间,使大部分的零和重复元素不存储。 1、下三角矩阵的压缩存储(按行) 设k为一维数组 M[ (1+n) n/2] 的下标 M 压缩存储的下三角矩阵地址计算 例:设M[k] = a43 ,即有i=4,j=3,则 k = ? 2、对称矩阵的压缩存储 与下三角矩阵完全相同。在以行为主压缩存储对称矩阵A的情况下,访问对称矩阵A中第i行、第j列元素aij的公式为 3、三对角矩阵的压缩存储(按行) 压缩存储的三对角矩阵地址计算 4.3 稀疏矩阵的压缩 稀疏矩阵的概念 稀疏矩阵:矩阵的阶数很大,非零元个数较少,零元很多,非零元的排列没有一定规律。 4.3.1 稀疏矩阵的三元组存储 稀疏矩阵可用三元组表进行压缩存储。每个非零元用 (行号、列号、非零元) 三元组来表示: (i, j, v) 例:如下所示稀疏矩阵,其三元组表为: 稀疏矩阵的三元组存储 三元组存储 (设矩阵有m行,行号为k(0=k=m-1)) 用三列二维数组来存储稀疏矩阵的三元组表。 为便于访问三元组表中非零元,附加两个数组: POS[] 长度为m 表示稀疏矩阵中第k行上第一个非零元在三元组表中的行号,有:POS[0] = 1 NUM[] 长度为m 表示稀疏矩阵第k行中非零元的个数,有: POS[k] = POS[k-1] + NUM[k-1] (1=k=m-1) 例 稀疏矩阵及三元组如下: 4.3.2 稀疏矩阵类声明 三元组类型声明 template class T struct B { int i; //非零元所在的行号 int j; //非零元所在的列号 T v; //非零元值 }; 稀疏矩阵(三元组表)类声明 class X_Array { private: int mm, nn, tt; //矩阵中行数、列数、非零元个数 BT *bb; //三元组表首指针 int *pos, *num; //附加数组首指针 public: void in_X_Array(); //键盘输入 void prt_X_Array(); //按行输出稀疏矩阵 X_Array tran_X_Array(); //稀疏矩阵转置 X_Array operator + (X_Array ); //稀疏矩阵相加 }; 注意:为表述清晰,将表示稀疏矩阵总体信息的特殊三元组独立存放,不在放在三列二维数组中! 算法1、键盘输入稀疏矩阵 1、输入稀疏矩阵信息:行数mm、列数nn、 非零元个数 tt; 2、输入非零三元组(行、列、值)表bb[tt]; 3、构造稀疏矩阵中行的非零元个数数组: NUM[ bb[k].i ] = NUM[ bb[k].i ] + 1; (其中,k : 0 ~ tt-1 ) 4、构造稀疏矩阵行中第一个非零元在三元组 表中位置数组: (

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档