C语言数据结构 稀疏矩阵
实验十稀疏矩阵
#include <>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 100
typedef int Status;
typedef float ElemType;
typedef struct{
int i,j; n");
return ERROR;
}
p=1; =row;
M->data[p].j=col;
M->data[p].e=e;
M->tu++;
return OK; }
for(t=1;t<=M->tu;t++)&&(col>=M->data[t].j))
p++;
if(row==M->data[t-1].i && col==M->data[t-1].j){
=e;
return OK; }
for(i=M->tu;i>=p;i--){=M->data[i].i;
M->data[i+1].j=M->data[i].j;
M->data[i+1].e=M->data[i].e;
} =row;
M->data[p].j=col;
M->data[p].e=e;
M->tu++;
return OK; }
Status FindElem(const TSMatrix *M,int row,int col,ElemType *e)
{
==row&&M->data[p].j==col)
{
*e=M->data[p].e;
return TRUE;
}
return FALSE; }
Status TransposeSMatrix(const TSMatrix *M,TSMatrix *T){
==col){
T->data[q].i=M->data[p].j;
T->data[q].j=M->data[p].i;
T->data[q].e=M->data[p].e;
q++;
}
}
return OK; }
Status FastTransposeSMatrix(const TSMatrix *M,TSMatrix *T)
{
n");
exit(0);
}
for(col=1;col<=M->nu;col++)
num[col]=0; ];
cpot[1]=1; ;
q=cpot[col];
T->data[q].i=M->data[p].j;
T->data[q].j=M->data[p].i;
T->data[q].e=M->data[q].e;
++cpot[col];
}n");
return ERROR; }
Q->mu=M->mu;
Q->nu=T->nu;
Q->tu=0;
p=1;
for(i=1;i<=Q->mu;i++){
for(j=1;j<=Q->nu;j++){
s=0;
for(k=1;k<=M->nu;k++){
if(FALSE==FindElem(M,i,k,&m))
continue;
if(FALSE==FindElem(T,k,j,&t))
continue;
s+=m*t; }
if(s!=0){=i;
Q->data[p].j=j;
Q->data[p].e=s;
p++;
Q->tu++;
}
}
}
return OK;
}
void PrintSMatrix(const TSMatrix *M) {
&&j==M->data[p].j)
{
printf("%g\t",M->data[p].e);
p++;
}
else{
printf("%g\t",;
}
}
printf("\n");
}
printf("\n");
}