- 1、本文档共56页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
华东理工大学数据结构第5章.ppt
数 据 结 构 信息学院 第五章 数组和广义表 5.1 数组的定义 5.2 数组的顺序表示和实现 5.3 矩阵的压缩存储 5.3.1 特殊矩阵 5.3.2 稀疏矩阵 5.4 广义表的定义 5.5 广义表的存储结构 下三角矩阵的存储和对称矩阵类似,sa[k]和aij对应关系是: i(i+1)/2+j i≧j n(n+1)/2 ij 上三角矩阵中,主对角线之上的第i行(0≦in)恰有n-i个元素,按行优先顺序存放上三角矩阵中的元素aij时,aij之前的i行一共有 i(n+n-i+1)/2= i(2n-i+1)/2 个元素,在第i行上,aij前恰好有j-i个元素:aij,aij+1,…aij-1。因此,sa[k]和aij的对应关系是: i(2n-i+1)/2+j-i 当i≦j n(n+1)/2 当ij k= k= 3、对角矩阵 对角矩阵中,所有的非零元素集中在以主对角线为了中心的带状区域中,即除了主对角线和主对角线相邻两侧的若干条对角线上的元素之外,其余元素皆为零。 a00 a01 a10 a11 a12 a21 a22 a23 …. ….. …. an-2 n-3 an-2 n-2 an-2 n-1 an-1 n-2 an-1 n-1 按某个原则(或以行为主,或以对角线的顺序)将其压缩存储到一维数组中 5.3 稀疏矩阵 假设m行n列的矩阵含t个非零元素,则称 ?? d =t/(m * n)为稀疏因子 通常认为 d 0.05 的矩阵为稀疏矩阵 5.3.2 稀疏矩阵的存储 1.三元组顺序表 define SMAX 1024 /*一个足够大的数*/ typedef struct { int i,j; /*非零元素的行、列*/ datatype v; /*非零元素值*/ }SPNode; /*三元组类型*/ typedef struct { int mu,nu,tu; /*矩阵的行、列及非零元素的个数*/ SPNode data[SMAX+1]; /*三元组表*/ } SPMatrix; /*三元组表的存储类型*/ 求转置矩阵的操作: 用常规的二维数组表示时的算法 for (col=1; col=nu; ++col) for (row=1; row=mu; ++row) T[col][row] = M[row][col]; 其时间复杂度为: O(mu×nu) 三元组存储稀疏矩阵的转置: (1) 算法思路: ①A的行、列转化成B的列、行; ②在A.data中依次找第一列的、第二列的、直到最后一列,要反复搜索A表,并将找到的每个三元组的行、列交换后顺序存储到B.data中即可。 i j v 1 1 1 15 2 1 5 91 3 2 2 11 4 3 2 3 5 4 1 22 6 4 3 6 7 6 1 -15 i j v 1 1 1 15 2 1 4 22 3 1 6 -15 4 2 2 11 5 2 3 3 6 3 4 6 7 5 1 91 status TransM1 (SPMatrix *A) { T.mu=M.nu; T. nu= M. mu; T. tu= M. tu /*稀疏矩阵的行、列、元素个数*/ if (T. tu0) /*有非零元素则转换*/ { q=1; for (col=1; col=(T. nu); col++)/*按A的列序转换*/ for (p=1; p= (A-tu); p++)/*扫描整个三元组表*/ if (T. data[p].j==col ) {M.
文档评论(0)