主题:三元组顺序表表示的稀疏矩阵转置
问题:
输入格式:
输入第1行为矩阵行数m、列数n及非零元素个数t。 按行优先顺序依次输入t行,每行3个数,分别表示非零元素的行标、列标和值。
输出格式:
输出转置后的三元组顺序表结果,每行输出非零元素的行标、列标和值,行标、列标和值之间用空格分隔,共t行。
输入样例1:
3 4 3
0 1 -5
1 0 1
2 2 2
结尾无空行
输出样例1:
0 1 1
1 0 -5
2 2 2
结尾无空行
思路:
- 先声明好两个三元组结构体,都有总行数、总列数、非零数总数、储存非零数的数组四个成员。
typedef struct{
int m ,n , num;//总行数 总列数 总非零数个数
triple data[MAXSIZE + 1];//非零数存入,并记录他们的行列
}tsmatrix;
其中,储存非零数的数组为一个结构体类型,其中每个数都有数字、所在行数、所在列数三个成员。
typedef struct{
int i, j, data;//行 列 数值
}triple;
- 通键盘输入来初始化原三元组的全部四个成员。
- 初始化转置三元组的总行数(=原三元组的总列数)、总列数(=原三元组的总行数)、非零数总数三个成员。
//M为原矩阵,T为转置矩阵
T.n = M.m;//T的行数 = M的列数
T.m = M.n;//T的列数 = M的行数
T.num = M.num;//总数不变
- 开始初始化转置三元组的非零数数组成员: