#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、请输入稀疏矩阵的行数、列数、非零元素的个数: "); 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("**************************************** "); printf("mu=%d nu=%d tu=%d ",T.mu,T.nu,T.tu); printf("**************************************** "); for(a=1;a<=T.tu;a++) printf("%d %d %d ",T.data[a].i,T.data[a].j,T.data[a].e); printf("**************************************** "); } int main() { TS T,M,N,S; CreateTS(&T); CreateTS(&M); printf("2、稀疏矩阵T的输出: "); Display(T); printf("2、稀疏矩阵N的输出: "); Display(M); printf("3、稀疏矩阵T的转置运算成功! "); Transport(T,&S); printf("3、稀疏矩阵M的转置运算成功! "); Transport(M,&N); printf("4、稀疏矩阵T的转置输出: "); Display(S); printf("4、稀疏矩阵M的转置输出: "); Display(N); return 0; }