描述
以三元组表作为存储结构实现稀疏矩阵的转置。
部分代码如下,请将代码补充完整。提交时不包括已给出的代码。
void print(TSMatrix C)
{
int i, j, n = 1;
while (n <= C.tn)
for (i = 1; i <= C.rn; i++)
{
for (j = 1; j <= C.cn; j++)
if (C.elem[n].row == i&&C.elem[n].col == j)
{
printf("%4d", C.elem[n].data);
n++;
}
else
printf("%4d", 0);
printf("\n");
}
}
int main()
{
int i, j, m, n, k, t;
TSMatrix *A, B;
while (scanf("%d%d%d", &m, &n, &t) && t != 0)
{
A = creat(m, n, t);
TransposeMatrix(A, &B);
print(B);
free(A);
}
return 0;
}
输入
输入数据有多组,每组输入数据第一行是三个整数m、n、t,分别代表稀疏矩阵的行数、列数和稀疏矩阵中非零元素的个数。接下来是t行,每行三个整数,分别代表非零元素所在的行、列和非零元素的值。t为0时输入结束。
非零元不超过20个。
输出
转置以后的稀疏矩阵,即n行m列的矩阵。
样例输入
3 4 3
1 1 5
2 3 7
3 1 2
样例输出
5 0 2
0 0 0
0 7 0
0 0 0
提示
稀疏矩阵以三元组表存储。