欢迎来到天天文库
浏览记录
ID:51196092
大小:29.00 KB
页数:4页
时间:2020-03-09
《稀疏矩阵的加法.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#include#definem2#definen2#definemax50/*转储稀疏矩阵的算法*/voidCreateMatrix(intA[m][n],intB[50]){ inti,j,k=0; for(i=0;i2、[max]){ inti=0,j=0,k=0; while(A[i]!=-1&&B[j]!=-1) { if(A[i]==B[j]) { //行相等 if(A[i+1]==B[j+1]) { //且列相等 C[k]=A[i]; C[k+1]=A[i+1]; C[k+2]=A[i+2]+B[j+2]; k=k+3; i=i+3; j=j+3; } else if(A[i+1]3、[k+1]=A[i+1]; C[k+2]=A[i+2]; k=k+3; i=i+3; } else { //B的列小于A的列,将B的三个元素直接存入C中 C[k]=B[j]; C[k+1]=B[j+1]; C[k+2]=B[j+2]; k=k+3; j=j+3; } } else if(A[i]4、; C[k+1]=A[i+1]; C[k+2]=A[i+2]; k=k+3; i=i+3; } else { //B的行小于A的行,将B的三个元素直接存入C中 C[k]=B[j]; C[k+1]=B[j+1]; C[k+2]=B[j+2]; k=k+3; j=j+3; } }//循环结束 if(A[i]==-1) while(B[j]!=-1) { //A结束B还有元素,将B的所有元素直接存5、入C中 C[k]=B[j]; C[k+1]=B[j+1]; C[k+2]=B[j+2]; k=k+3; j=j+3; } else while(A[i]!=-1) { //B结束A还有元素,将A的所有元素直接存入C中 C[k]=A[i]; C[k+1]=A[i+1]; C[k+2]=A[i+2]; k=k+3; i=i+3; } C[k]=-1;} voidmain(){ intE[m][n],F[m][n],A[max],B[max],C[max]6、;//定义两个矩阵E,F inti,j,k; for(i=0;i7、储到一维数组A中 MatrixAdd(A,B,C); //矩阵A、B相加存入C i=0;j=0;k=0; printf("A数组内容如下:"); while(A[i]!=-1) { //输出A中内容 printf("%5d,%5d,%5d",A[i],A[i+1],A[i+2]); i=i+3; } printf("B数组内容如下:"); while(B[j]!=-1) { //输出A中内容 printf("%5d,%5d,%5d",B[j],B[j+1],B[j+2]); j=j+3; } printf8、("C数组内容如下:"); while(C[k]!=-1) { //输出A中内容 printf("%5d,%5d,%5d",C[k],C[k+1],C[k+2]); k=
2、[max]){ inti=0,j=0,k=0; while(A[i]!=-1&&B[j]!=-1) { if(A[i]==B[j]) { //行相等 if(A[i+1]==B[j+1]) { //且列相等 C[k]=A[i]; C[k+1]=A[i+1]; C[k+2]=A[i+2]+B[j+2]; k=k+3; i=i+3; j=j+3; } else if(A[i+1]
3、[k+1]=A[i+1]; C[k+2]=A[i+2]; k=k+3; i=i+3; } else { //B的列小于A的列,将B的三个元素直接存入C中 C[k]=B[j]; C[k+1]=B[j+1]; C[k+2]=B[j+2]; k=k+3; j=j+3; } } else if(A[i]
4、; C[k+1]=A[i+1]; C[k+2]=A[i+2]; k=k+3; i=i+3; } else { //B的行小于A的行,将B的三个元素直接存入C中 C[k]=B[j]; C[k+1]=B[j+1]; C[k+2]=B[j+2]; k=k+3; j=j+3; } }//循环结束 if(A[i]==-1) while(B[j]!=-1) { //A结束B还有元素,将B的所有元素直接存
5、入C中 C[k]=B[j]; C[k+1]=B[j+1]; C[k+2]=B[j+2]; k=k+3; j=j+3; } else while(A[i]!=-1) { //B结束A还有元素,将A的所有元素直接存入C中 C[k]=A[i]; C[k+1]=A[i+1]; C[k+2]=A[i+2]; k=k+3; i=i+3; } C[k]=-1;} voidmain(){ intE[m][n],F[m][n],A[max],B[max],C[max]
6、;//定义两个矩阵E,F inti,j,k; for(i=0;i7、储到一维数组A中 MatrixAdd(A,B,C); //矩阵A、B相加存入C i=0;j=0;k=0; printf("A数组内容如下:"); while(A[i]!=-1) { //输出A中内容 printf("%5d,%5d,%5d",A[i],A[i+1],A[i+2]); i=i+3; } printf("B数组内容如下:"); while(B[j]!=-1) { //输出A中内容 printf("%5d,%5d,%5d",B[j],B[j+1],B[j+2]); j=j+3; } printf8、("C数组内容如下:"); while(C[k]!=-1) { //输出A中内容 printf("%5d,%5d,%5d",C[k],C[k+1],C[k+2]); k=
7、储到一维数组A中 MatrixAdd(A,B,C); //矩阵A、B相加存入C i=0;j=0;k=0; printf("A数组内容如下:"); while(A[i]!=-1) { //输出A中内容 printf("%5d,%5d,%5d",A[i],A[i+1],A[i+2]); i=i+3; } printf("B数组内容如下:"); while(B[j]!=-1) { //输出A中内容 printf("%5d,%5d,%5d",B[j],B[j+1],B[j+2]); j=j+3; } printf
8、("C数组内容如下:"); while(C[k]!=-1) { //输出A中内容 printf("%5d,%5d,%5d",C[k],C[k+1],C[k+2]); k=
此文档下载收益归作者所有