data[p].j=col;M->data[p].e=e;M->" />

C语言数据结构 稀疏矩阵

C语言数据结构 稀疏矩阵
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");

}

相关主题
相关文档
最新文档