数据构造稀疏矩阵基本运算实验报告.docx
《数据构造稀疏矩阵基本运算实验报告.docx》由会员分享,可在线阅读,更多相关《数据构造稀疏矩阵基本运算实验报告.docx(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据构造稀疏矩阵基本运算实验报告课程设计课程:数据构造题目:稀疏矩阵4三元组单链表构造体(行数、列数、头)矩阵运算重载运算符优班级:姓名:学号:设计时间:2020年1月17日2020年5月XX日成绩:指导老师:楼建华一、题目二、概要设计1.存储构造typedefstructintrow,col;/行,列datatypev;/非0数值Node;typedefstructNodedatamax;/稀疏矩阵intm,n,t;/m行,n列,t非0数个数2.基本操作istream&operator(istream&input,Matrix*A)/输入ostream&operator2乘法运算要点已知稀疏
2、矩阵A(m1n1)和B(m2n2),求乘积C(m1n2)。稀疏矩阵A、B、C及它们对应的三元组表A.data、B.data、C.data如图6所示。由矩阵乘法规则知:C(i,j)=A(i,1)B(1,j)+A(i,2)B(2,j)+A(i,n)B(n,j)=这就是讲只要A(i,k)与B(k,p)(即A元素的列与B元素的行相等的两项)才有相乘的时机,且当两项都不为零时,乘积中的这一项才不为零。矩阵用二维数组表示时,a11只要可能和B中第1行的非零元素相乘,a12只要可能和B中第2行的非零元素相乘,而同一行的非零元是相邻存放的,所以求c11和c12同时进行:求a11*b11累加到c11,求a11*
3、b12累加到c12,再求a12*b21累加到c11,再求a12*b22累加到c22.,当然只要aik和bkj(列号与行号相等)且均不为零(三元组存在)时才相乘,并且累加到cij当中去。3稀疏矩阵的快速转置要点:矩阵A中三元组的存放顺序是先行后列,对同一行来讲,必定先碰到列号小的元素,这样只需扫描一遍A.data。所以需引入两个向量来实现:numn+1和positionn+1,numcol表示矩阵A中第col列的非零元素的个数(为了方便均从1单元用起),positioncol初始值表示矩阵A中的第col列的第一个非零元素在B.data中的位置。于是position的初始值为:position1=
4、1;positioncol=positioncol-1+numcol-1;2coln依次扫描A.data,当扫描到一个col列元素时,直接将其存放在B.data的positioncol位置上,positioncol加1,positioncol中始终是下一个col列元素在B.data中的位置。123当前位置:文档视界数据构造稀疏矩阵基本运算实验报告数据构造稀疏矩阵基本运算实验报告四、源程序测试结果#include#include#include#includeusingnamespacestd;#definemax100#definedatatypeinttypedefstructintrow,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 构造 稀疏 矩阵 基本 运算 实验 报告
限制150内