数据结构稀疏矩阵转置,加法.doc

数据结构稀疏矩阵转置,加法.doc

ID:55706735

大小:119.00 KB

页数:8页

时间:2020-05-25

数据结构稀疏矩阵转置,加法.doc_第1页
数据结构稀疏矩阵转置,加法.doc_第2页
数据结构稀疏矩阵转置,加法.doc_第3页
数据结构稀疏矩阵转置,加法.doc_第4页
数据结构稀疏矩阵转置,加法.doc_第5页
资源描述:

《数据结构稀疏矩阵转置,加法.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、《数据结构》实验报告◎实验题目:稀疏矩阵的转置、加法(行逻辑链接表)◎实验目的:学习使用三元组顺序表表示稀疏矩阵,并进行简单的运算◎实验内容:以三元组表表示稀疏矩阵,并进行稀疏矩阵的转置和加法运算。一、需求分析该程序目的是为了用三元组表实现稀疏矩阵的转置和加法运算。1、输入时都是以三元组表的形式输入;2、输出时包含两种输出形式:运算后得到的三元组表和运算后得到的矩阵;3、测试数据:(1)转置运算时输入三元组表:121213931-3361443245218611564-7得到转置后的三元组表:13-3161521122518319342446-76314(2)进行

2、加法运算时先输入矩阵A(以三元组表形式):11122223431-4输入矩阵B(以三元组表形式):13-223-531832-6A与B的和矩阵以矩阵形式输出为:10-202-14-60(二)概要设计为了实现上述操作首先要定义三元组表,稀疏矩阵:typedefstruct{inti,j;inte;}Triple;//三元组typedefstruct{Tripledata[MAXSIZE+1];intmu,nu,tu;}Matrix;//稀疏矩阵1.基本操作voidCreatMatrix(Matrix*m)操作结果:创建一个稀疏矩阵。voidPrintMatrix(M

3、atrixm)初始条件:矩阵m已存在。操作结果:将矩阵m以矩阵的形式输出。voidFastTransposeMatrix(Matrixa,Matrix*b)初始条件:稀疏矩阵a已存在;操作结果:将矩阵a进行快速转置后存入b中。voidAddMatrix(Matrixa,Matrixb,Matrix*c)初始条件:稀疏矩阵a和b都已存在;操作结果:将矩阵a和b的和矩阵存入c中。2.本程序包含了两个模块:(1)头文件模块;其中包括定义三元组表Triple和稀疏矩阵Matrix,以及创建矩阵voidCreatMatrix(Matrix*m)和输出矩阵voidPrintM

4、atrix(Matrixm)两个函数;(2)主程序模块;包括主函数main(),快速转置函数voidFastTransposeMatrix(Matrixa,Matrix*b)和实现矩阵相加函数voidAddMatrix(Matrixa,Matrixb,Matrix*c)(三)详细设计定义三元组和稀疏矩阵类型:typedefstruct{inti,j;inte;}Triple;typedefstruct{Tripledata[MAXSIZE+1];intmu,nu,tu;}Matrix;创建头文件:“Matrix.h”voidCreatMatrix(Matrix*m

5、)//矩阵的初始化{intp=1,a,b,c;printf("请输入矩阵的行数、列数、非零元的个数(数据用空格隔开):");scanf("%d%d%d",&(*m).mu,&(*m).nu,&(*m).tu);while(p<=(*m).tu){printf("请输入第%d个非零元素的行数,列数,元素值(数据用空格隔开):",p);scanf("%d%d%d",&a,&b,&c);(*m).data[0].i=0;(*m).data[0].j=0;(*m).data[p].i=a;(*m).data[p].j=b;(*m).data[p].e=c;p++;}}vo

6、idPrintMatrix(Matrixm)//矩阵的输出{inti,j,p=1;printf("%d行%d列%d个非零元素以矩阵形式输出:",m.mu,m.nu,m.tu);for(i=1;i<=m.mu;i++){for(j=1;j<=m.nu;j++){if((m.data[p].i==i)&&(m.data[p].j==j)){printf("%4d",m.data[p].e);p++;}elseprintf("%4d",0);}printf("");}}主程序模块:#include"Matrix.h"#includevoidFa

7、stTransposeMatrix(Matrixa,Matrix*b)//采用三元组顺序表存储表示,求稀疏矩阵a的转置矩阵b{intp,q,col,t;intnum[MAXSIZE+1];intcpot[MAXSIZE+1];(*b).mu=a.nu;(*b).nu=a.mu;(*b).tu=a.tu;if((*b).tu){for(col=1;col<=a.nu;col++)num[col]=0;for(t=1;t<=a.tu;t++)//求a中每一列含非零元的个数num[a.data[t].j]++;cpot[1]=1;//求第col列中第一个非零元在b.da

8、ta中的序

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。