资源描述:
《数据结构课程设计--稀疏矩阵运算器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、题目:编制一个稀疏矩阵运算器的程序班级:计算机科学与技术四班姓名:奚明学号:41012170源代码://head.h#defineMAXSIZE10000typedefstruct//稀疏矩阵的三元组顺序表存储表示{inti,j;//该非零元的行下标和列下标inte;}Triple;typedefstruct{Tripledata[MAXSIZE];//非零元三元组表,data[0]未用intrpos[MAXSIZE+1];//各行第一个非零元的位置表intmu,nu,tu;//矩阵的行数列数和非零元的个数}
2、RLSMatrix;voidCreateSMatrix(RLSMatrix*T);voidAddRLSMatrix(RLSMatrixM,RLSMatrixN,RLSMatrix*Q);voidSubRLSMatrix(RLSMatrixM,RLSMatrixN,RLSMatrix*Q);intMulTSMatrix(RLSMatrixM,RLSMatrixN,RLSMatrix*Q);voidPrintSMatrix(RLSMatrixQ);//main.cpp#includeusing
3、namespacestd;#include"head.h"voidmain(){RLSMatrixM,N,Q;inti;do{printf("tt***************************");printf("tt稀疏矩阵运算器");printf("tt***************************");printf("tt1.矩阵相加");printf("tt2.矩阵相减");printf("tt3.矩阵相乘");print
4、f("tt4.退出");printf("tt请选择:");scanf("%d",&i);if(i==4)gotoend;else{printf("请输入第一个矩阵M:");CreateSMatrix(&M);printf("请输入第二个矩阵N:");CreateSMatrix(&N);switch(i){case1:AddRLSMatrix(M,N,&Q);break;case2:SubRLSMatrix(M,N,&Q);break;case3:MulTSMatrix(M,N,
5、&Q);break;default:break;}}PrintSMatrix(Q);getchar();getchar();end:;}while(i!=4);}//xishujuzhen.cpp#includeusingnamespacestd;#include"head.h"voidCreateSMatrix(RLSMatrix*T)//输入创建稀疏矩阵{intk;printf("请输入矩阵行数、列数及非零元个数:");scanf("%d%d%d",&T->mu,&T->nu,&T
6、->tu);printf("");if(T->tu>MAXSIZE
7、
8、T->mu>21){printf("非零个数超出定义范围!出错!");exit(0);}for(k=1;k<=T->tu;k++){printf("请输入第%d个非零元素的行数,列数及其值:",k);scanf("%d%d%d",&T->data[k].i,&T->data[k].j,&T->data[k].e);}}voidAddRLSMatrix(RLSMatrixM,RLSMatrixN,RLSMatrix*Q)//稀疏矩阵相加{
9、intp,q,k=1;if(M.mu!=N.mu
10、
11、M.nu!=N.nu){printf("你的输入不满足矩阵相加的条件!");exit(1);}Q->mu=M.mu;Q->nu=M.nu;for(p=1,q=1;p<=M.tu&&q<=N.tu;){if(M.data[p].i==N.data[q].i){if(M.data[p].j==N.data[q].j){Q->data[k].i=M.data[p].i;Q->data[k].j=M.data[p].j;Q->data[k].e=M.data[p
12、].e+N.data[q].e;p++;q++;k++;}elseif(M.data[p].jdata[k].i=M.data[p].i;Q->data[k].j=M.data[p].j;Q->data[k].e=M.data[p].e;k++;p++;}elseif(M.data[p].j>N.data[q].j){Q->data[k].i=N.data[q].i