#include<iostream>
using namespace std;
#define M 4
#define N 4
#define MaxSize 32
typedef struct{
int r; //行号
int c; //列号
int d; //元素值
}TupNode;
typedef struct{
int rows; //行数
int cols; //列数
int nums; //非零元素个数
TupNode data[MaxSize];
}TSMatrix;
void CreatMat(TSMatrix &t, int A[M][N])
{
t.rows = M;
t.cols = N;
t.nums = 0;
for (int i = 0; i<M; i++)
{
for (int j = 0; j<N; j++)
if (A[i][j] != 0)
{
t.data[t.nums].r = i;
t.data[t.nums].c = j;
t.data[t.nums].d = A[i][j];
t.nums++;
}
}
}
void Print(TSMatrix t)
{
if (t.nums <= 0)
return;
cout << "\t" << t.rows << "\t" << t.cols << "\t" << t.nums << endl;
cout << "\t------------------\n";
for (int i = 0; i<t.nums; i++)
cout << "\t" << t.data[i].r << "\t" << t.data[i].c << "\t" << t.data[i].d << endl;
}
void TranTat(TSMatrix t, TSMatrix &tb)
{
int p, q = 0, v;
tb.rows = t.cols;
tb.cols = t.rows;
tb.nums = t.nums;
if (t.nums != 0)
{
for (v = 0; v<t.cols; v++)
for (p = 0; p<t.nums; p++)
if (t.data[p].c == v)
{
tb.data[q].r = t.data[p].c;
tb.data[q].c = t.data[p].r;
tb.data[q].d = t.data[p].d;