稀 疏 矩 阵 的 加 、 减 、 乘 、 求 逆 运 算 #include #include using namespace std; const int MAXSIZE = 100; //定义非零元素的最多个数 const int MAXROW = 10; //定义数组行数的最大值 const int SIZENUM = 10; typedef struct //定义三元组元素 { int r, c; //矩阵的行号和列号 int v; //矩阵元素值 }Triple; typedef struct //定义普通三元组对象 { Triple data[MAXSIZE+1]; int rows, cols, nzeroNums; //行数、列数、非零元素个数 }TSMatrix; typedef struct //定义行逻辑链接的顺序表 { Triple data[MAXSIZE+2]; //非0 元三元组表 int rpos[MAXROW+1]; //各行第一个非零元素的位置表 int rows, cols, nzeroNums; //行数、列数、非零元素个数 }RLSMatrix; //输入三元组矩阵 template bool InputTSMatrix(T &M, int y) { cout << "输入矩阵的行数、列数和非零元素个数: "; cin >> M.rows >> M.cols >> M.nzeroNums; cout << "请输入非零元素对应的行号、列号和相应的元素值: " << endl; for (int i = 1; i <= M.nzeroNums; i++) { cin >> M.data[i].r >> M.data[i].c >> M.data[i].v; } return true; } //输出矩阵,按标准格式输出 template bool OutputSMatrix(T M) { int i, j, k = 1; for (i = 0; i < M.rows; i++) { for (j = 0; j < M.cols; j++) { if ((M.data[k].r-1) == i && (M.data[k].c-1) == j) { cout << setw(4) << M.data[k].v; k++; } else cout << setw(4) << "0"; }//end_j cout << endl; }//end_i return true; } //求稀疏矩阵的转置 int TranSMatrix() { TSMatrix M, T; InputTSMatrix(M, 0); int col, p, q = 1; T.rows = M.cols; T.cols = M.rows; T.nzeroNums = M.nzeroNums; if (T.nzeroNums) { for (col = 1; col <= M.cols; col++) { for (p = 1; p <= M.nzeroNums; p++) { if (M.data[p].c == col) { T.data[q].r = M.data[p].c; T.data[q].c = M.data[p].r; T.data[q].v = M.data[p].v; ++q; } }//end_p }//end_col }//end_if cout << "运用普通转置算法, 输入矩阵的转置矩阵为: " <<...