C语言数据结构 稀疏矩阵
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验十稀疏矩阵
#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");
}