稀疏矩阵的压缩存储方法及主要运算的实现

上传人:pu****.1 文档编号:511557253 上传时间:2022-11-07 格式:DOC 页数:8 大小:52.50KB
返回 下载 相关 举报
稀疏矩阵的压缩存储方法及主要运算的实现_第1页
第1页 / 共8页
稀疏矩阵的压缩存储方法及主要运算的实现_第2页
第2页 / 共8页
稀疏矩阵的压缩存储方法及主要运算的实现_第3页
第3页 / 共8页
稀疏矩阵的压缩存储方法及主要运算的实现_第4页
第4页 / 共8页
稀疏矩阵的压缩存储方法及主要运算的实现_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《稀疏矩阵的压缩存储方法及主要运算的实现》由会员分享,可在线阅读,更多相关《稀疏矩阵的压缩存储方法及主要运算的实现(8页珍藏版)》请在金锄头文库上搜索。

1、.实验目的: 掌握稀疏矩阵的压缩存储措施及重要运算的实现。.实验内容与规定: 设计一种稀疏矩阵计算器,规定可以:输入并建立稀疏矩阵;输出稀疏矩阵;执行两个矩阵相加;执行两个矩阵相乘;求一种矩阵的转置矩阵。3. 数据构造设计 逻辑构造:线性构造 存储构造:顺序存储构造.算法设计#inclde#dfnMSZE 0typedef int dataype;yede srct int i,; daatype v;Tiple;typeefsrtriple datXSIZE+1; n rpsAXSIE+; int mu,u,tu;RLSMatrix;int mn() voAddMrx(RSMtrix); v

2、id ulSMtrix(RMtrix M); vod FatTrnsposeSatrix(RLMatrix M); RLSMrx M; int ; pntf(请输入稀疏矩阵的行数、列数和非零元素个数:); caf(%d%d%d,&.mu,&M.n,&.tu); intf(请输入稀疏矩阵M中非零元素的行号、列号和元素的值:n);fr(;k=M.u;+) canf(dd%d,&.datai,&Mdatak.,&M.dk); rtf(请输出稀疏矩阵M中非零元素的行号、列号和元素的值:); for(k1;k=M.tu;k+) rif(%d%33d,.datk.i,M.dtkj,M.datav); pt

3、f(n); Addai(M); uSMtrix(M); FstTraspoeSMtrix(M); retr 0;voidAdSMatrix(RLSMatx M)RLMatrix N,R; n k,l1,s=1; rn(请输入稀疏矩阵N的行数、列数和非零元素个数:); sca(%d,&.mu,N.u,&N.tu); prit(请输入稀疏矩阵N中非零元素的行号、列号和元素的值:n);for(k=1;kNtu;k+) anf(%d%d%,&N.atak.i,&datak.j,.data.); if(Mmu!=m.u!N.nu) prinf(错误n); else Rmu=M.m; R.=M.nu; =

4、; i(M.tu*N.tu!=0) hile(k=.t&l=Nt) if(M.dtk.i=N.datal.i) if(.datakj.datkj) .dtas.i=M.tak.i; Ratas.dak.j; R.datas.=M.data.; k+; +; else i(M.daakj=Naal.) .dtai=M.dtk.i; R.datasjM.datak.; Rdatasv=.daak.+Ndaav; f(R.datas.v!=) s+; k+; l+; es R.aasi=N.dtal.i; R.datas.jN.aal.j; R.daasv=.datalv; l+; s+; else

5、 if(M.datak.N.datal.i) R.dat.i=M.datai; R.datasj=M.dak.; R.dats.=M.dak.v; ; s; els atas.i=.dtali; .dataN.atal.j; Rdatas.v=.al.v; l+; s+; wl(k=Mu) .datas.i=Mdatk.i; R.dats.M.dakj; .data.v=M.datav; k+; s+; wile(lN.u) R.daas.i=Ndatal.i;R.datas.=.datlj; datasv=Ndaa.v; +; s+; prnt(请输出稀疏矩阵和稀疏矩阵N的和矩阵R中非零元素

6、的行号、列号和元素的值:n); r(1;ks;k+) pritf(%d%3d%3dn,Rdatk.i,.at.j,R.daa); oid MultSMrix(RLSMatix M)RSatr D,; in numMXSIZE,uMAXIE,cempMAXSIE,aow,brow,ccol,tp,t; rintf(请输入稀疏矩阵D的行数、列数和非零元素个数:); sc(%d%d%,&D.m,&D.nu,.tu); prin(请输入稀疏矩阵D中非零元素的行号、列号和元素的值:n); o(t=;=D.tu;+) scanf(%d%d%d,Ddati,&D.datat.,&Ddatat.); for(

7、col=;cc.m;col) num1col=0; for(t=1;t=M.tu;+) num1M.data.i+; Mpos1=1; for(col=2;co=M.mu;col+)M.poco=M.roscco-1+num1co-; for(ccol=1;ccol=D.m;ccol+) um2ccol0; for(t=1;t=Dtu;t+) um2.datt.i+; .rpos1=1; for(ccol=2;cc.mu;col+)D.rscol=D.poscol-1+nu2ccl-1; if(M.u!Dmu) prntf(错误);ele Q.mu=.mu;Q.uDnu;Q.tu=0; (M.

8、t*Dtu!0) fo(arow1;aro=Mm;arow+) or(cc=;ccol=Q.u;cco+) tmccol=0; Q.rposarow=.t+1; f(aoMAXSIZE) print(错误n); ese Q.aQ.u.iaow; .dataQ.tu.jccol; QataQtu.v=ctepccol; prf(请输出稀疏矩阵和稀疏矩阵D的乘积矩阵Q中非零元素的行号、列号和元素的值:);or(col=1;co.;col+) printf(%3d%n,Q.dtacco.i,Q.dtaccol.j,Q.atacol.v);void FasTranspseSMrix(LSatix ) RLMix ; int nmAXSZ,cpotXZ,col,p,t; Tm=u;T.nu=M.u;tu=.tu; (T.u!=0) for(ol=;colmu;col+) cl=0; or(t=1;tMtu;+) nuMdaat.+;pot1=;fo(col2;=M.u;c+) cpococpotcol-1+umcl-1; for

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号