#include <stdio.h>
#define MAXSIZE 100
typedef struct {
int i, j;
int e;
} Triple;
typedef struct {
Triple data[MAXSIZE + 1];
int mu, nu, tu;
} TSMatrix;
void TransposeSMatrix(TSMatrix M, TSMatrix *T) {
int p, q, col;
T->mu = M.nu;
T->nu = M.mu;
T->tu = M.tu;
if (T->tu) {
q = 1;
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++;
}
}
}
}
}
int main() {
TSMatrix A, B;
int i;
A.mu = 6;
A.nu = 5;
A.tu = 8;
A.data[1].i = 1;
A.data[1].j = 2;
A.data[1].e = 12;
A.data[2].i = 1;
A.data[2].j = 3;
A.data[2].e = 9;
A.data[3].i = 3;
A.data[3].j = 1;
A.data[3].e = -3;
A.data[4].i = 3;
A.data[4].j = 5;
A.data[4].e = 14;
A.data[5].i = 4;
A.data[5].j = 3;
A.data[5].e = 24;
A.data[6].i = 5;
A.data[6].j = 2;
A.data[6].e = 18;
A.data[7].i = 6;
A.data[7].j = 1;
A.data[7].e = 15;
A.data[8].i = 6;
A.data[8].j = 4;
A.data[8].e = -7;
printf("三元组表A为:\n");
for (i = 1; i <= A.tu; i++) {
printf("(%d,%d,%d) ", A.data[i].i, A.data[i].j, A.data[i].e);
}
printf("\n");
TransposeSMatrix(A, &B);
printf("转置矩阵B为:\n");
for (i = 1; i <= B.tu; i++) {
printf("(%d,%d,%d) ", B.data[i].i, B.data[i].j, B.data[i].e);
}
printf("\n");
return 0;
}