- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE 352软 件 学 院上 机 实 验 报 告课程名称: 数据结构 实验项目: 矩阵 实 验 室: 耘 慧420 姓 名: 学 号 专业班级: 实验时间: 2016.11.24 实验成绩评阅教师实验目的及要求1.掌握稀疏矩阵压缩存储方法(三元组顺序表存储)。2.完成压缩存储下矩阵计算(矩阵转置)。性质验证性实验学时2学时实验环境 C与C++程序设计学习与实验系统实验内容及步骤实验内容:1.实现矩阵压缩存储。(静态数组压缩存储或直接输入矩阵非0元均可)2.实现矩阵转置算法。3.实现矩阵快速转置。实验步骤:1.实现矩阵压缩存储。(静态数组压缩存储或直接输入矩阵非0元均可)2.实现矩阵转置算法TransposeSMatrix(TSMatrix M,TSMatrix T)。3.实现矩阵快速转置FastTransposeSMatrix(TSMatrix M,TSMatrix T)。4.主函数中创建矩阵M,将M调用转置算法转置成矩阵N,调用快速转置算法转化成矩阵T。六、实验数据及结果分析总结 了解了矩阵的一些知识,懂得了矩阵的一些算法。并且在实际上机中,学会了矩阵的程序的编写方法。附录 源程序清单插入; #includestdio.h#includemalloc.h#includeconio.h#includestdlib.h#define OK 1#define ERROR 0#define MAXSIZE 12500#define MAXRC 1000typedef int ElemType;typedef int Status;typedef struct {int i,j;ElemType e;}Triple; typedef struct{ Triple data[MAXSIZE+1]; int rpos[MAXRC+1]; int mu,tu,nu;}RLSMatrix;Status TransposeSMatrix(RLSMatrix M, RLSMatrix T){ int q=1,col=0,p=0; T.mu=M.nu; T.nu=M.mu; T.tu=M.tu; if(T.tu){ q=1; for(col=1;col=M.nu;++col)for(p=1;p=M.tu;++p)if(M.data[p].j==col){T.data[q].i=M.data[p].j;T.data[q].j=M.data[p].i;T.data[q].e=M.data[p].e;++q;}}return 0;}Status FastTransposeSMtrix(RLSMatrix M,RLSMatrix T){ int col=0,t=0,p=0,q=0;ElemType num[100],cpot[100]; T.mu=M.nu;T.nu=M.mu;T.tu=M.tu;if(T.tu){for(col=1;col=M.nu;++col)num[col]=0;for(t=1;t=M.tu;++t)++num[M.data[t].j];cpot[1]=1;for(col=2;col=M.nu;++col) cpot[col]=cpot[col-1]+num[col-1];for(p=1;p=M.tu;++p){col=M.data[p].j;q=cpot[col];T.data[q].i=M.data[p].j;T.data[q].j=M.data[p].i;T.data[q].e=M.data[p].e;++cpot[col];}}return OK;}Status CreateSMatrix(RLSMatrix *M){int k,m,n,i;ElemType e;printf(请输入行 列 非零个数);scanf_s(%d,(*M).mu);scanf_s(%d,(*M).nu);scanf_s(%d,(*M).tu);(*M).data[0].i=0;for(i=1;i=(*M).tu;i++){ do{ printf(请输入元素行列元素值); scanf_s(%d,m);scanf_s(%d,n);scanf_s(%d,e); k=0; if(m1||m(*M).mu||n1||n(*M).nu)
文档评论(0)