您好,欢迎访问三七文档
三元组矩阵相加计算二班田甜31110427#includeiostream#includeiomanipusingnamespacestd;constboolTRUE=1;constboolFALSE=0;constintMAXSIZE=100;//定义非零元素的最多个数typedefstruct//定义三元组元素{intr,c;//矩阵的行号和列号intv;//矩阵元素值}Triple;typedefstruct//定义普通三元组对象{Tripledata[MAXSIZE+1];intmu,nu,tu;//行数、列数、非零元素个数}TSMatrix;boolInputTSMatrix(TSMatrix&M,inty){cout输入矩阵的行数、列数和非零元素个数:;cinM.muM.nuM.tu;cout请输入非零元素对应的行号、列号和相应的元素值:endl;for(inti=1;i=M.tu;i++){cinM.data[i].rM.data[i].cM.data[i].v;}returnTRUE;}boolOutputSMatrix(TSMatrixM){inti,j,k=1;for(i=0;iM.mu;i++){for(j=0;jM.nu;j++){if((M.data[k].r-1)==i&&(M.data[k].c-1)==j){coutsetw(4)M.data[k].v;k++;}elsecoutsetw(4)0;}//end_jcoutendl;}//end_ireturnTRUE;}//两个稀疏矩阵的加法intAddMatrix(TSMatrixM,TSMatrixN,TSMatrixQ){//求采用三元组顺序表存储表示的稀疏矩阵M和N的和,,结果赋给矩阵Qif((M.mu=0)||(M.nu=0)||(M.tu0)||(N.mu=0)||(N.nu=0)||(N.tu0))return0;if(M.mu!=N.mu||M.nu!=N.nu)return0;Q.mu=M.mu;Q.nu=M.nu;Q.tu=0;intx=0,y=0;for(inti=1;i=Q.mu;i++){for(intj=1;j=Q.nu;j++){for(intp=1;p=M.tu;p++){if((i==M.data[p].r)&&(j==M.data[p].c)){x=M.data[p].v;break;}elsex=0;}//forpfor(intq=1;q=N.tu;q++){if((i==N.data[q].r)&&(j==N.data[q].c)){y=N.data[q].v;break;}elsey=0;}//forqif((x+y)!=0){Q.data[Q.tu+1].r=i;Q.data[Q.tu+1].c=j;Q.data[Q.tu+1].v=x+y;Q.tu++;}//if}//forj}//foriOutputSMatrix(Q);return0;}voidmain(){TSMatrixA,B,C;InputTSMatrix(A,1);cout矩阵A是:endl;OutputSMatrix(A);InputTSMatrix(B,1);cout矩阵B是:endl;OutputSMatrix(B);cout加法结果是:\n;AddMatrix(A,B,C);}调试结果:
本文标题:三元组矩阵相加
链接地址:https://www.777doc.com/doc-2778566 .html