已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告课程名:数据结构(C语言版)实验名:矩阵的压缩存储姓 名: 班 级: 学 号: 时 间:2014.11.23一 实验目的与要求1. 掌握并实现稀疏矩阵的压缩存储的方法2. 在该存储方法上实现矩阵的操作二 实验内容 判断一个用二维数组存储的矩阵是不是稀疏矩阵 将其转化为压缩存储的形式 在压缩存储上实现矩阵的乘法和转置操作三 实验结果与分析压缩转置程序:#include/判断该矩阵是否为稀疏矩阵#define m10#define n10int amn=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,;struct threeint i,j;int value;struct three stu100;struct three1int i,j;int value;struct three1 stu1100;int jiance()int x=0;/赋初值为0for(x=0;x=99;x+)stux.value=0;float t=0;float v;for(int i=0;im;i+)for(int j=0;jn;j+)if(aij!=0)t+;if(v=t/(m*n)=0.05)printf(该矩阵为稀疏矩阵%fn,v);return 1;elseprintf(该矩阵不是稀疏矩阵n);return 0;void yasuo()int t=0;for(int r=0;rm;r+)for(int c=0;cn;c+)if(arc!=0)stut.i=r;stut.j=c;stut.value=arc;t+;void display()int x=0;printf(压缩矩阵的三元组为:n);for(x=0;x=99;x+)if(stux.value=0)break;printf(%d,%d,%d ,stux.i,stux.j,stux.value);printf(n);void zhuanzhi()int x=0;/赋初值为0int t=0;int num10=0,0,0,0,0,0,0,0,0,0;/每一列非0的数目for(x=0;x=99;x+)stu1x.value=0;for(int j=0;jn;j+)for(int i=0;im;i+)if(aij!=0)numj+;t+;int cpot10=0,0,0,0,0,0,0,0,0,0;cpot0=0;for(j=1;jn;j+)cpotj=cpotj-1+numj-1;int col=0;int q=0;for(int k=0;kt;k+)col=stuk.j;q=cpotcol;stu1q.i=stuk.j;stu1q.j=stuk.i;stu1q.value=stuk.value;+cpotcol;void display1()int x=0;printf(转置以后的三元组为:n);for(x=0;x=99;x+)if(stu1x.value=0)break;printf(%d,%d,%d ,stu1x.i,stu1x.j,stu1x.value);printf(n);void display2() int d,b; for(d=0;dm;d+) for(b=0;bm;b+) printf(%d ,adb); printf(n); void main()display2();if(jiance()=1)yasuo();display();zhuanzhi();display1();图1:压缩转置程序运行结果矩阵的乘法程序:#include#define m13#define n14#define m24#define n22int a1m1n1=3,0,0,5,0,-1,0,0,2,0,0,0,;int a2m2n2=0,2,1,0,-2,4,0,0,;struct three1int i,j;int value;struct three1 stu1100;struct three2int i,j;int value;struct three2 stu2100;struct three3int i,j;int value;struct three3 stu3100;int ar1posm1=0;int ar2posm2=0;int Qrposm1;int yasuo1()int t=0;ar1pos0=0;for(int r=0;rm1;r+)for(int c=0;cn1;c+)if(a1rc!=0)stu1t.i=r;stu1t.j=c;stu1t.value=a1rc;t+;ar1posr+1=t;return t;int yasuo2()int t=0;ar2pos0=0;for(int r=0;rm2;r+)for(int c=0;cn2;c+)if(a2rc!=0)stu2t.i=r;stu2t.j=c;stu2t.value=a2rc;t+;ar2posr+1=t;return t;void chengfa(int x1,int x2)int a1m=0;int a2m=0;int tp,p,br,t,q,ccol;int qtu=0;for(a1m=0;a1mm1;a1m+)int ctempm1=0;if(a1m(m1-1)tp=ar1posa1m+1;elsetp=x1;for(p=ar1posa1m;ptp;+p)br=stu1p.j;if(br(m2-1)t=ar2posbr+1;elset=x2;for(q=ar2posbr;qt;+q)ccol=stu2q.j;ctempccol+=stu1p.value*stu2q.value;for(ccol=0;ccoln2;+ccol)if(ctempccol!=0)stu3qtu.i=a1m;stu3qtu.j=ccol;stu3qtu.value=ctempccol;+qtu;void display()int x=0;printf(a1与a2乘积之后的三元组是:n);for(x=0;x=99;x+)if(stu3x.value=0)break;printf(%d,%d,%d ,stu3x.i,stu3x.j,stu3x.value);printf(n);void display1()int m,n;printf(a1矩阵为:n);for(m=0;mm1;m+)for(n=0;nn1;n+)printf(%d ,a1mn);printf(n);printf(a2矩阵为:n);for(m=0;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 线性代数简明教程(第二版)-电子课件
- 2026年金华市婺城区政务服务中心(窗口人员)招聘笔试参考题库及答案详解
- 2026年渝中区北碚区工会人员招聘考试参考试题及答案详解
- 2026年四川省广元市政务服务中心(窗口人员)招聘考试模拟试题及答案详解
- 建筑材料购销合同范本
- 2026年西藏自治区日喀则市政务服务中心(窗口人员)招聘考试参考题库及答案详解
- 2026年8月珠海市南水集团有限公司公开招聘就业见习生1人笔试备考题库及答案详解
- 2026年武汉市汉南区政务服务中心(窗口人员)招聘笔试参考试题及答案详解
- 2026年呼和浩特市回民区工会人员招聘考试备考试题及答案详解
- 2026年株洲市荷塘区政务服务中心(窗口人员)招聘笔试参考题库及答案详解
- 2025-2026学年小学一年级(下)期末数学试卷
- 云计算平台建设验收规范
- 2026年共产党党章知识竞赛试题库(附答案)
- 超声三基考试试题及答案
- 施工现场临时排水施工方案
- GB/T 47592-2026塑料胺类环氧固化剂伯、仲、叔胺基氮含量的测定
- 2026年云南省中考英语试卷(含答案及解析)
- 2025-2026学年浙江省金华市八年级下册期末教学质量评价卷数学试题 含答案
- 2026年昆山初中分班测试题及答案
- 2026年军队考核笔押题宝典考试题库及参考答案详解(综合卷)
- 2026安徽师范大学工作人员招聘29人笔试备考题库及答案解析
评论
0/150
提交评论