#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 1000
typedef struct
{
int row, col;
int e;
} Triple;
typedef struct
{
Triple data[MAXSIZE + 1];
int m, n, len;
}TSMatrix;
void TransposeTSMatrix(TSMatrix A, TSMatrix B)
{
int i, j, k;
B.m = A.n;
B.n = A.m;
B.len = A.len;
printf("转置运算后:\n");
if(B.len > 0)
{
j = 1;
for(k = 1; k <= A.n; k++)
{
for(i = 1; i <= A.len; i++)
{
if(A.data[i].col == k)
{
B.data[j].row = A.data[i].col;
B.data[j].col = A.data[i].row;
B.data[j].e = A.data[i].e;
printf("%d %d %d \n", B.data[j].row, B.data[j].col, B.data[j].e);
j++;
}
}
}
}
}
int main()
{
int a[3][5] = { {1, 0, 0, 0, 8},{0, 0, 0, 0, 4},{3, 0, 0, 0, 0} };
int i, j, k;
TSMatrix tsm;
TSMatrix TSM;
tsm.m = 3;
tsm.n = 5;
tsm.len = 0;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 5; j++)
{
if (a[i][j] != 0)
{
Triple t;
t.row = i+1;
t.col = j+1;
t.e = a[i][j];
tsm.data[tsm.len+1] = t;
tsm.len++;
}
}
}
for (i = 1; i <= tsm.len; i++)
{
printf("%d %d %d \n", tsm.data[i].row, tsm.data[i].col, tsm.data[i].e);
}
TransposeTSMatrix(tsm, TSM);
system("pause");
return 0;
}