题目:
三元组顺序表表示的稀疏矩阵转置。
输入格式:
输入第1行为矩阵行数m、列数n及非零元素个数t。 按行优先顺序依次输入t行,每行3个数,分别表示非零元素的行标、列标和值。
输出格式:
输出转置后的三元组顺序表结果,每行输出非零元素的行标、列标和值,行标、列标和值之间用空格分隔,共t行。
输入样例:
3 4 30 1 -51 0 12 2 2输出样例:
0 1 11 0 -52 2 2思路分析:
这一题较为简单,我才用了使用空间复杂度换时间的方法,通过开出一个指针数组,完成了行优先向列优先的转化。

代码展示:
#include #include using namespace std;#define MAXSIZE 15typedef struct vectr{ int i; int j; int data;} vectr;int main(){ vectr *p[MAXSIZE][MAXSIZE] = {NULL}; vectr *tem = (vectr *)malloc(sizeof(vectr)); int row, col, num; cin >> row >> col >> num; int cont; while (num--) { cont = 0; cin >> tem->i >> tem->j >> tem->data; for (int i = 0; i < MAXSIZE; i++) if (p[tem->j][i] != NULL) cont++;//通过cont判断存放位置减少之后的判断次数 p[tem->j][cont] = tem; tem = (vectr *)malloc(sizeof(vectr)); }//存入完毕 for (int i = 0; i < MAXSIZE; i++) for (int j = 0; j < MAXSIZE; j++) { if (p[i][j] == NULL) break;//空则后面皆是空,跳出 else cout << p[i][j]->j << ' ' << p[i][j]->i << ' ' << p[i][j]->data << endl; }//输出完毕 return 0;}
该博客介绍如何使用三元组顺序表表示的稀疏矩阵进行转置操作。内容包括输入输出格式说明、样例展示以及思路解析,强调通过开辟额外空间以行优先转化为列优先的方法来实现转置,降低了时间复杂度。
3198

被折叠的 条评论
为什么被折叠?



