该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#define MAXSIZE 400
typedef struct
{
int i,j,e;
}Triple;
typedef struct
{
Triple data[MAXSIZE+1];
int rpos[100];
int mu,nu,tu;
}RLSMatrix;
RLSMatrix create(RLSMatrix A)
{
int k=1,h=0,i=1;
printf("输入稀疏矩阵的行数,列数和非零元个数:");
scanf("%d%d%d",&A.mu,&A.nu,&A.tu);
for(h=1;h<=A.tu;h++)
{
if(h>1)k=A.data[h-1].i ;
printf("输入第%d个非0元素的行数,列数和值:",h);
scanf("%d%d%d",&A.data[h].i,&A.data[h].j,&A.data[h].e);
for(i=1;i<=A.mu;i++)
{
A.rpos[i]=k;
while(A.data[k].i<=i && k<=A.tu)
k++;
}
}
return A;
}
RLSMatrix jiafa(RLSMatrix M,RLSMatrix N)
{RLSMatrix Q;
int m=1,n=1,a=1; int i=0,k=1;
while (m<=M.tu&&n<=N.tu)
{
if ( M.data[m].i==N.data[n].i)
if( M.data[m].j==N.data[n].j)
{ Q.data[a].i= M.data[m].i; Q.data[a].j= M.data[m].j; Q.data[a].e= M.data[m].e+M.data[m].e;
m++;n++;a++ ;}
else if (M.data[m].j
{ Q.data[a]= M.data[m];
m++; a++ ; }
else { Q.data[a]= N.data[n];
n++; a++ ; }
else if (M.data[m].i
m++; a++ ; }