#include<stdio.h>
#include<stdlib.h>
#include<stdarg.h>
#define OK 1
#define MAXSIZE 12500
typedef int Status;
typedef struct
{
int i,j;
int e;
}Triple;
typedef struct
{
Triple data[MAXSIZE+1];
int mu,nu,tu;
}TSMatrix;
Status Transpose(TSMatrix M,TSMatrix &T)
{
T.mu = M.nu;
T.nu = M.mu;
T.tu = M.tu;
if(T.tu)
{
int p=1,col,q;
for(col=1;col<=M.nu;++col)
for(p=1;p<=M.tu;++p)
if(M.data[p].j == 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;
}
int main()
{
TSMatrix M;
TSMatrix T;
int p,q;
printf("输入矩阵的行、列和非零元个数:");
scanf("%d %d %d",&M.mu,&M.nu,&M.tu);
printf("\n");
for(p=1;p<=M.tu;++p)
{
printf("输出行、列和非零数的值:\n");
scanf("%d,%d,%d",&M.data[p].i,&M.data[p].j,&M.data[p].e);
}
printf("\n");
Transpose(M,T);
printf("输出转置后的行、列和非零元个数:%d,%d,%d\n",T.mu,T.nu,T.tu);
printf("\n");
for(q=0;q<T.tu;++q)
{
printf("输出行、列和非零数的值:%d,%d,%d\n",T.data[q].i,T.data[q].j,T.data[q].e);
}
return OK;
}
C语言数据结构——稀疏矩阵的转置
最新推荐文章于 2022-03-27 12:26:53 发布