#include <stdio.h>
#include <stdlib.h>
#define Num 125
typedef struct Triple
{
int i,j;
int e;
}Triple;
typedef struct TS
{
Triple data[Num];
int mu,nu,tu;
}TS;
void CreateTS(TS *M)
{
int s;
printf("1、请输入稀疏矩阵的行数、列数、非零元素的个数:\n");
scanf("%d%d%d",&M->mu,&M->nu,&M->tu);
for(s=1;s<=M->tu;s++)
scanf("%d%d%d",&M->data[s].i,&M->data[s].j,&M->data[s].e);
}
void Transport(TS M,TS *T)
{
int a,b,k;
T->mu=M.nu;
T->nu=M.mu;
T->tu=M.tu;
k=1;
for(a=1;a<M.nu;a++)
for(b=1;b<=M.tu;b++)
if(a==M.data[b].j)
{
T->data[k].e=M.data[b].e;
T->data[k].j=M.data[b].i;
T->data[k].i=M.data[b].j;
k++;
}
}
void Display(TS T)
{
int a;
printf("****************************************\n");
printf("mu=%d\tnu=%d\ttu=%d\n",T.mu,T.nu,T.tu);
printf("****************************************\n");
for(a=1;a<=T.tu;a++)
printf("%d\t\t%d\t\t%d\t\n",T.data[a].i,T.data[a].j,T.data[a].e);
printf("****************************************\n");
}
int main()
{
TS T,M,N,S;
CreateTS(&T);
CreateTS(&M);
printf("2、稀疏矩阵T的输出:\n");
Display(T);
printf("2、稀疏矩阵N的输出:\n");
Display(M);
printf("3、稀疏矩阵T的转置运算成功!\n");
Transport(T,&S);
printf("3、稀疏矩阵M的转置运算成功!\n");
Transport(M,&N);
printf("4、稀疏矩阵T的转置输出:\n");
Display(S);
printf("4、稀疏矩阵M的转置输出:\n");
Display(N);
return 0;
}