- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软技术基础--栈队列串数组.ppt
* * * * * * * * * * * * * * * * * * 二维数组 (二)列优先存放 a11 a21... am1a12 a22... am2a1j a2j ...aii... a1n a2n ... amn Loc(aij) = Loc(a11) + (( j - 1)*m + (i - 1))*S a11 a12 aij amn a21 ... ... ... ... j i 二维数组 5.2矩阵的压缩存储 (1)对称矩阵,三角矩阵的压缩 对称矩阵:a[ i , j ] = a[ j , i ] 三角矩阵:上三角为0,或下三角为0 只存储上或下三角内的元素,节约近一半的存储空间 a11 a21a22a31a32a33a41… aii... an1 an2 ... ann ... 1 3 5 6 3 4 2 7 4 2 1 5 5 3 6 0 二维数组 (1)对称矩阵,三角矩阵的压缩 i = j 时,元素位于下三角 Loc(aij) = Loc(a11) + ( i ( i - 1) / 2 + ( j - 1))*S i j 时,元素位于上三角 Loc(aij) = Loc(a11) + ( j ( j - 1) / 2 + ( i - 1))*S a11 a21a22a31a32a33a41… aii... an1 an2 ... ann ... 1 3 5 6 3 4 2 7 4 2 1 5 5 3 6 0 1+2+3+…+(i-1) 二维数组 三对角矩阵(带状矩阵) a11 a12 0 0 … 0 a21 a22 a23 0 … 0 0 a32 a33 a34 … 0 0 0 a43 a44 … 0 … … … … … … 0 0 0 0 … ann-1 0 0 0 0 … ann a11 a12a21a22a23a32a33… aii-1 aii aii+1 ... ann Loc(aij) = Loc(a11) + ( ( i - 1)*2 + j - 1)*S 二维数组 (2)稀疏矩阵 矩阵中的非零元素很少,分布没有规律 利用三元存储法 先形成三元矩阵 再按照行优先顺序方式存储。 aij 行值,列值,元素值 AMN = 行数 列数 非零元素个数 行值 列值 元素值 ... 第一行 第一个非零元素 ... 行值 列值 元素值 第二个非零元素 二维数组 稀疏矩阵压缩存储例 1 0 0 6 3 0 0 0 0 0 0 0 1 0 0 X48 = 0 0 0 0 0 0 0 0 0 4 1 2 4 3 1 1 2 6 1 3 4 A63 = 5 1 7 3 5 8 0 0 5 0 0 0 0 0 行数 列数 非零元素个数 a[18] = {4,8,5,1,1,1,2,4,1,3,2,6,3,7,5,4,1,3} 二维数组 稀疏矩阵三元组定义 1)定义三元组元素 2)定义三元组 typedef struct tuple3tp{ int row_num; /*行号*/ int col_num; /*列号*/ elemtype value; /*元素值*/ } tuple3tp typedef struct tuple3{ int row; /*行数*/ int col; /*列数*/ int num; /*非零元素个数*/ tuple3tp data[ MAXNUM];/* 三元组*/ }tuple3; 上机习题:稀疏矩阵求转置 void transposition(tuple3 * a, tuple3 * b) { int col, i,num; b.row = a.col, b.col = a.row, b.num = a.num; num = 0; for(col = 0; col a.col ; col ++){ for(i = 0; i a.num; i ++){ if( a[ i ].col_num = = col){ b[ num ].col_num = a[ i ].row_num; b[ num ].row_num = a[ i ].col_num; b[ num ].value = a[ i ].value; num += 1; } }} } 注意:部分“.”在实际程序中应该为“-” 思考:稀疏矩阵相加 转置后的矩阵仍以三元组法,行优先存放 小结 数据结构 数据逻辑结构 数据存储结构 算法 线性结
文档评论(0)