欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2023年实现稀疏矩阵采用三元组表示的基本运算实验报告.docx

    • 资源ID:72786741       资源大小:27.01KB        全文页数:13页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2023年实现稀疏矩阵采用三元组表示的基本运算实验报告.docx

    实现稀疏矩阵(采用三元组表达)的基本运算实验报告一实验题目: 实现稀疏矩阵(采用三元组表达)的基本运算二实验规定:(1)生成如下两个稀疏矩阵的三元组a和b;(上机实验指导P92 )(2)输出a转置矩阵的三元组;(3)输出a + b的三元组;(4)输出a * b的三元组;三实验内容:3. 1稀疏矩阵的抽象数据类型:A DT S pars e M a trix 数据对象:D= aij| i =2, 3, n;a i J£E1 e mS e l,m和n分别称为矩阵的行数和 列数数据关系:R= Row , Col )Row =<ai,j ,aij +1> | iWiWm, lWjW n -1)Col=<ai, j , a i + 1 ,j >| 1 W i Wm-l, 1 WjWn 基本操作:Cr e a t cSMatrix(&M)操作结果:创建稀疏矩阵MPrintSMatrix (M)v =a. d atai. d+ b . dataj. d;。oi f (v!=0)/只将不为0的结果添加到c中8ooc. d ata k . r=a. d a tai. r;a>c. d a tak. c=a. datai. c ;gg c. da t ak. d=v;«>k+;6031+; j+;)e 1 s e if ( a . da t ai. r< b , da t a j. r) /a 元素的 行号小于b元素的行号。 (c. da t a k . r=a. dat a i. r 将 a 元素添加到 c中g c . data k. c =a. dat a i. c;«>c. d a t a k. d =a. dat a i. d;ok+; i +;)oc 1 se 600oc 1 se 600/ /a元素的行号大于b元素的行号。c. d atak. r= b . data j . r;/ /将 b 元素添加到 c 中。 c. d at a k . c =b. d a t a j. c;3C. datak. d= b . da t aj . d ;。k+; j+;)c. n u ms=k;)return true;int getv a lu e (T S Matrix c,int i , int j)(int k =0;wh i le (k<c. num s && (c. da t ak. r! = i I | c. da t ak. c!=J )g k + + ;if (k<c. nums)ret u rn ( c . d at a k. d);elseoreturn(O);bool MatMul (TSMat r ix a, TSMatrix b, TSMatrix & c )i n t i, j, k, p=0;El e mT y p e s ;if ( a . c o 1 s!=b. rows) “/a的列数不等于b的行数时不能进行相乘运算return f als e ;for ( i =0;i<a. r ows;i+)for (j=0; j <b. col s ; j+)。(s= 0 ;for ( k =0;k<a. co 1 s;k+ + )o®s= s +g e tvalu e (a, i, k)*g e tvalue(b, k,j);if ( s !=0)/产生一个三元组元素c . d atap. r=i;c. da t a p . c = j ;c . datap. d= s ;p+;c. rows=a. r ows;oc. c o 1 s =b. c ols;oc. n u m s =p;ret u rn true;int main ()(E 1 emTy pe alNN = 10, 3,0),0, 1,0,0),(0,0, 1,0, 0 , 0, 1, 1);6ElemType bl N N =3, 0, 0,0,0, 4, 0,0,0,0, 1,0,0,0,0, 2);oTSMatrix a , b, c;sCreatMat (a, a 1 ) ; Great Mat ( b , b 1 ); opri n tf ( " a 的三元组:n); DispMa t (a);呼 r intf ( " b 的三元组: n );D i spMat (b); op r i ntf (" a转置为 c n");Tr a nMat (a, c);叩 r i n tf (,zc 的三元组:n);D i spMa t (c);oprintf (c=a+b n);M a tA d d (a, b, c);p r i ntf ( c 的三元组: n);DispMa t (c);o p ri n t f ( " c=a X b n);MatMul ( a , b, c);opr i n tf ("c 的三元组:n ");Di s pMa t ( c );r e tur n 0;四实验结果(T D:C2014.1212.12test.exea的三元组: 40 0 12 33 b的三元组:4131111401234专置为cc的三元组:434120 12223 c=a+b c的三元组:41131110 12 3 3435213c=aXbc的三元组:446032341 112 2Process 工eturned 0 (0x0) execution time : 0.017 s Press any key to continue.初始条件:稀疏矩阵M已经存在操作结果:打印矩阵MDestroySMatr i x(&M)初始条件:稀疏矩阵M已经存在操作结果:销毁矩阵MCopySMat r ix(M, &T)初始条件:稀疏矩阵M已经存在操作结果:复制矩阵M到TAddSMatri x (M, N , &Q)初始条件:稀疏矩阵M、N已经存在操作结果:求矩阵的和Q=M + NS ub S Matr i x (M, N, &Q)初始条件:稀疏矩阵M、N已经存在操作结果:求矩阵的差Q=M-NTr a n s poseSMatr i x(M, & T)初始条件:稀疏矩阵M已经存在操作结果:求矩阵M的转置TMui t SMatrix(M, N, &Q)初始条件:稀疏矩阵M己经存在操作结果:求矩阵的积Q=M*N)ADT SparscM a tri x32存储结构的定义# define N 4type def int ElemT y p e ;# d e fi n e MaxSize# d e fi n e MaxSize1 0 0”/矩阵中非零元素最多个数typedef struct int r;int c;E 1 e mType d; TupN o de;t y pe d e f structint rows;int cols;int n u ms ;。/行号/列号“/元素值/三元组定义。/行数值。/列数值。非零元素个数T u pNode d ataMaxS i ze;TSMatr i x ;/三元组顺序表定义3. 3基本操作实现:v o i d CreatM a t (TSMatr i x & t , E1 emT y pe ANN)int i, j ;t. r o w s=N; t. col s =N; t . n ums=0;f or (i=0; i <N; i+)f or (j=0; j<N; j+)if (A i j !=0) (。t . data t. nums. r=i; t. data t. n u m s . c=j;8t. d a t a t. num s . d=Ai j ;t. nums+ ;000;0 voi d D i s pM a t ( TSMatri x t) (int i;if ( t . n u ms<=0)®®re t urn;叩rint f ( t /dt%dt%dn,t. r o ws, t. c ols, t. n urns);p rin t f (tn);for (i =0; i<t. num s ; i+)printf (z/t%dt% d t% d n,t. dat a i . r , t . d at a i. c , t. d a ta i. d);)3.4 解题思绪:1 .转置矩阵:只要鉴定原矩阵有值,那么只要遍历一遍原矩阵,把本来 矩阵中非0元素行列变换一下赋值到新的矩阵中即可。2 .矩阵加法:用各种if判断,区分出矩阵进行加法时的也许情况,分 情况解决即可。3 .矩阵乘法:通过get v al u e (c , i, j) 函数查找 矩阵c 中i行j歹U,所储存的元素的值。然后便是模拟矩阵乘法的过程进行求 解。3.5 解题过程:实验源代码如下:3. 5.1顺序表的各种运算include <s t dio. h >#de f i ne N 4typedef int Ele mT y pe;# d efine Ma x Si z e 1 0 0/矩阵中非零元素最多个数ty p ede f s t rue toint r ;/行号/列号。/元素值 Tu p Node;三元组定义t y pedef struc tint r o w s ;行数值int col s ;,/列数值int nums;。/非零元素个数TupNode data Max S i ze; TSMatrix;/三元组顺序表定义void CreatMat (TSMatrix &t, E 1 e mType AN N ) n t i , j ;t. r o ws=N; t. col s =N ; t. nums = 0;for (i = 0 ; i<N ; i+)for (j=0 ;j<N; j + + )oi f (A i j! =0)8 t. d a t at. nums. r =i; t. datat. n ums. c =j;的 t . d a t at. n u ms. d=Ai j; t. nums + + ;。 d)voi d DispMa t (T SMatrix t) i n t i;i f (t. nums< = 0)。 ret u rn;pr i n tf ( n t%d t %d t%dn " , t. rows, t. cols, t . n u ms);pr i n t f (t n ");for (i= 0 ; i<t. n u ms; i + +)p r intf (z,t%d t %d t %d n,z, t. datai. r, t. da t ai . c, t. dat ai. d);)void T r anMat (TSM a t rix t, TSM a trix &tb) i nt p, q=0, v; 。/q 为 tb. d a ta 的下标tb. rows=t. c ols; tb. co 1 s =t. rows; t b. n u ms= t . n u ms;if (t. n u ms!= 0 )for ( v =0; v <t. cols;v + +)»/tb. d a t aq中的记录以 c 域的顺序排列。 of o r (p= 0 ;p<t. nums; p+) “/p 为 t. da t a 的下标。 oif (t. dataEp. c-v)0o (。tb. d a t a q. r=t. d ata p . c;。 8tb. data q. c=t. da t a p . r;gtb. da t a Eq. d=t. d a t ap. d;3 P + +;00)bo o 1 M a tAdd(TSMat r ix a, TSMa t rix b, TSM a trix &c)。i nt i=0, j = 0, k= 0 ;oE 1 e mTy p e v;if ( a . r o ws! = b . r o ws I | a . c o Is ! =b. c o 1 s)。 ret u rn f al s e;必行数或列数不等时不能进行相加运算c. row s =a. r ows;c. col s=a. c ols; c 的行列数与 a 的相同owh i 1 e (i<a. n ums && j<b. n um s ) / / 解决 a 和 b 中的每个元素if (a. d ata i. r =二b. d a ta j .r)。/行号相等时«« i f (a. d a ta i . c <b. dataj . c) / / a 元素的列号小于 b 元素的 列号8。<»c. d a t a k. r=a. datai. r ;/ 将 a 元素添加到 c 中。c. d atak. c=a. data i. c ;。c. da t a k . d =a. d ata i. d ;°k+; i+;0else i f ( a . datai. c>b. d a c)a 元素 的列号大于b元素的列号。(c . datak. r=b. d ataj . r ; 将 b 元素添加 至|J c中c . dat a Ek. c=b. dat a j . c;c. d ata k . d =b. data j. d ;k+;j + + ;oelse /a元素的列号等于b元素的列号

    注意事项

    本文(2023年实现稀疏矩阵采用三元组表示的基本运算实验报告.docx)为本站会员(太**)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开