代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct
{
int i,j;
int v;//值
}triple;
typedef struct
{
triple data[100];
int m,n,t;//行数,列数,元素数
}tripletable;
tripletable transmatrix(tripletable a)
{
tripletable b;
b.m=a.n;
b.n=a.m;
b.t=a.t;//
int col,x;
int num[10],pot[10];//
if(b.t)
{
for(col=1;col<=a.n;col++)
num[col]=0;
for(int k=0;k<a.t;k++)
num[a.data[k].j]++;
pot[1]=0;
for(col=2;col<=a.n;col++)
pot[col]=pot[col-1]+num[col-1];
int q;
for(x=0;x<a.t;x++)
{
col=a.data[x].j;
q=pot[col];
b.data[q].i=col;
b.data[q].j=a.data[x].i;
b.data[q].v=a.data[x].v;
pot[col]++;
}
}
return b;
}
int main()
{
tripletable a,b;
printf("请输入三元组a的行数,列数和元素个数:\n");
scanf("%d%d%d",&a.m,&a.n,&a.t);
printf("请输入三元组的具体信息(包括行,列,值)\n");
for(int x=0;x<a.t;x++)
{
scanf("%d%d%d",&a.data[x].i,&a.data[x].j,&a.data[x].v);
}
b=transmatrix(a);
printf("输出转置后三元组:\n");
for( x=0;x<b.t;x++)
{
printf("%d %d %d\n",b.data[x].i,b.data[x].j,b.data[x].v);
}
return 0;
}