欢迎来到天天文库
浏览记录
ID:59142098
大小:61.50 KB
页数:5页
时间:2020-09-11
《稀疏矩阵的转置.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、上机实验报告学院:计算机与信息技术学院专业:计算机科学与技术(师范)课程名称:数据结构实验题目:三元组法稀疏矩阵的转置班级序号:师范1班学号:1学生姓名:邓雪指导教师:杨红颖完成时间:2015年12月25号一、实验目的:(1)了解什么是三元组表和稀疏矩阵。(2)熟悉三元组的运用。(3)掌握稀疏矩阵按三元组法存储、创建、显示及转置。二、实验环境:Windows8.1MicrosoftVisualc++6.0三、实验内容及要求:将稀疏矩阵按照三元组法顺序存储,通过算法使矩阵转置并用三元组法输出转置后的矩阵。要求实验过程认真耐心。四、概要设计:若将表示稀
2、疏矩阵的非零元素的三元组按行优先的顺序排列,则得到一个其结点都是三元组的线性表。为了确定一个唯一的矩阵,需要存储该矩阵的行数和列数,为了运算方便,将非零元素的个数与三元组表存储在一起。再进行矩阵转置,后用三元组表输出转置后的矩阵。五、代码#include#include#definesmax16typedefintdatatype;//定义结构体typedefstruct{inti,j;//行列号datatypev;//元素值}node;//定义结构体typedefstruct{intm,n,t;//行数、列数
3、、非零元素个数nodedata[smax];}spmatrix;//稀疏矩阵类型//建立矩阵spmatrix*CREATE(spmatrix*c){intk;printf("请输入矩阵的行数:");scanf("%d",&c->m);printf("请输入矩阵的列数:");scanf("%d",&c->n);printf("请输入矩阵的非零元个数:");scanf("%d",&c->t);printf("请输入三元组表:");for(k=0;kt;k++){scanf("%5d",&c->data[k].i);scanf("%5d",&
4、c->data[k].j);scanf("%5d",&c->data[k].v);}returnc;}//稀疏矩阵的转置spmatrix*TRANSMAT(spmatrix*a){intano,bno,col;spmatrix*b;b=(spmatrix*)malloc(sizeof(spmatrix));b->m=a->n;b->n=a->m;b->t=a->t;if(b->t>0){bno=0;for(col=0;coln;col++)for(ano=0;anot;ano++)if(a->data[ano].j==col){b-
5、>data[bno].i=a->data[ano].j;b->data[bno].j=a->data[ano].i;b->data[bno].v=a->data[ano].v;bno++;}}returnb;}//输出voidPrint(spmatrix*a){intk;printf("转置后的三元组表:");for(k=0;kt;k++){printf("%5d",a->data[k].i);printf("%5d",a->data[k].j);printf("%5d",a->data[k].v);printf("");}}voi
6、dmain(){spmatrix*A;A=(spmatrix*)malloc(sizeof(spmatrix));CREATE(A);Print(TRANSMAT(A));printf("");}六、运行界面七、实验中遇到的问题及总结1.数据输入格式不对,导致数据没有输入完全程序就自动结束。经过细心检查解决了该问题。2.编写程序时将行和列写反导致转置后的矩阵结果错误。3.通过调试程序懂得了很多问题,锻炼了我的编程能力。八、参考文献《数据结构——用C语言描述》
此文档下载收益归作者所有