稀疏矩阵的转置,要求如下:(C语言编写代码)

2024-11-22 07:35:37
推荐回答(1个)
回答1:

#include
#include
#include
#define maxsize 12500
int num[maxsize]={0},copt[maxsize]={0};
typedef struct
{
int i,j;
int e;
}Triple;
struct TSMatrix
{
Triple data[maxsize+1];
int mu,nu,tu;
}M,T;
int main()
{
int i=1,j,k,col;
scanf("%d%d%d",&M.mu,&M.nu,&M.tu);
copt[1]=1;
while(scanf("%d%d%d",&M.data[i].i,&M.data[i].j,&M.data[i].e)!=EOF)
{
num[M.data[i].j]++;
i++;
}
printf("num:%d,",num[1]);
for(col=2;col<=M.nu;col++)
{
copt[col]=copt[col-1]+num[col-1];
printf("%d,",num[col]);
}
printf("\n");
printf("cpot:");
for(i=1;i<=M.nu;i++)
printf("%d,",copt[i]);
printf("\n");
for(j=1;j<=M.tu;j++)
{
col=M.data[j].j;
k=copt[col];
T.data[k].i=M.data[j].j;
T.data[k].j=M.data[j].i;
T.data[k].e=M.data[j].e;
copt[col]++;
}
for(i=1;i<=M.tu;i++)
printf("%d,%d,%d\n",T.data[i].i,T.data[i].j,T.data[i].e);
return 0;
}