数据结构-矩阵的压缩存储程序_第1页
数据结构-矩阵的压缩存储程序_第2页
数据结构-矩阵的压缩存储程序_第3页
数据结构-矩阵的压缩存储程序_第4页
数据结构-矩阵的压缩存储程序_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验报告课程名:数据结构(C语言版)实验名:矩阵的压缩存储姓 名: 班 级: 学 号: 时 间:2014.11.23一 实验目的与要求1. 掌握并实现稀疏矩阵的压缩存储的方法2. 在该存储方法上实现矩阵的操作二 实验内容 判断一个用二维数组存储的矩阵是不是稀疏矩阵 将其转化为压缩存储的形式 在压缩存储上实现矩阵的乘法和转置操作三 实验结果与分析压缩转置程序:#include<stdio.h>/判断该矩阵是否为稀疏矩阵#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,

2、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

3、.value=0;float t=0;float v;for(int i=0;i<m;i+)for(int j=0;j<n;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;r<m;r+)for(int c=0;c<n;c+)if(arc!=0)stut.i=r;stut.j=c;stut.value=arc;

4、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;j&

5、lt;n;j+)for(int i=0;i<m;i+)if(aij!=0)numj+;t+;int cpot10=0,0,0,0,0,0,0,0,0,0;cpot0=0;for(j=1;j<n;j+)cpotj=cpotj-1+numj-1;int col=0;int q=0;for(int k=0;k<t;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&qu

6、ot;);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;d<m;d+) for(b=0;b<m;b+) printf("%d ",adb); printf("n"); void main()display2();if(jiance()=1)yasuo();display();zhu

7、anzhi();display1();图1:压缩转置程序运行结果矩阵的乘法程序:#include<stdio.h>#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;

8、int value;struct three3 stu3100;int ar1posm1=0;int ar2posm2=0;int Qrposm1;int yasuo1()int t=0;ar1pos0=0;for(int r=0;r<m1;r+)for(int c=0;c<n1;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;r<m2;r+)for(int c=0;c<n2;c+)if

9、(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;a1m<m1;a1m+)int ctempm1=0;if(a1m<(m1-1)tp=ar1posa1m+1;elsetp=x1;for(p=ar1posa1m;p<tp;+p)br=stu1p.j;if(br<(m2-1)t=ar2posbr+1;elset=

10、x2;for(q=ar2posbr;q<t;+q)ccol=stu2q.j;ctempccol+=stu1p.value*stu2q.value;for(ccol=0;ccol<n2;+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;m<m1;m+)for(n=0;n<n1;n+)printf("%d ",a1mn);printf("n");printf("a2矩阵为:n");for(m=0;m<m2;m+)fo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论