[c]代码库
define SMAX 1024 /*一个足够大的数*/
typedef struct
{
int i,j; /*非零元素的行、列*/
datatype v; /*非零元素值*/
} SPNode; /*三元组类型*/
typedef struct
{
int mu,nu,tu; /*矩阵的行、列及非零元素的个数*/
SPNode data[SMAX]; /*三元组表*/
} SPMatrix; /*三元组表的存储类型*/
void TransM1 ( SPMatrix *A )
{
SPMatrix *B;
int p,q,col;
B=malloc ( sizeof ( SPMatrix ) ); /*申请存储空间*/
B->mu=A->nu;
B->nu=A->mu;
B->tu=A->tu;
/*稀疏矩阵的行、列、元素个数*/
if ( B->tu>0 ) /*有非零元素则转换*/
{
q=0;
for ( col=1; col<= ( A->nu ); col++ ) /*按A 的列序转换*/
for ( p=1; p<= ( A->tu ); p++ ) /*扫描整个三元组表*/
if ( A->data[p].j==col )
{
B->data[q].i= A->data[p].j ;
B->data[q].j= A->data[p].i ;
B->data[q].v= A->data[p].v;
q++;
}/*if*/
} /*if(B->tu>0)*/
return B; /*返回的是转置矩阵的指针*/
} /*TransM1*/