稀疏矩阵

您所在的位置:网站首页 三元组行表怎么求 稀疏矩阵

稀疏矩阵

2024-03-07 12:11| 来源: 网络整理| 查看: 265

对于稀疏矩阵,采用压缩存储方法时,只存储非0元素。必须存储非0元素的行下标值、列下标值、元素值。因此,一个三元组(i, j, aij)唯一确定稀疏矩阵的一个非零元素。

若以行序为主序,稀疏矩阵中所有非0元素的三元组,就可得构成该稀疏矩阵的一个三元组顺序表。

 

 代码:

#include #include #define OK 1 #define ERROR -1 #define MAXSTRLEN 255 typedef int Status; typedef int ElemType; typedef struct{ int row; //行下标 int col; //列下标 ElemType value; //元素值 }Triple; typedef struct{ int rn; //行数 int cn; //列数 int tn; //元素值 Triple data[MAXSTRLEN]; }TMatrix; void TransMatrix(TMatrix A, TMatrix *B){ int p, q, col; B->cn = A.rn; B->rn = A.cn; B->tn = A.tn; if(A.tn == 0) printf("A表为空表"); q = 0; for(col = 0; col < A.tn; col++){ //A的列数 一列一列变成B的行数 for(p = 0; p < A.tn; p++){ //循环次数是非零元素的个数 if(A.data[p].col == col){ B->data[q].row = A.data[p].col; B->data[q].col = A.data[p].row; B->data[q].value = A.data[p].value; q++; } } } } int main() { TMatrix A, B; int i, j, e; int k = 0; printf("输入三元组 矩阵(行数,列数,值)\n"); //EOF 输入结束 下一行Ctrl+z enter while(scanf("%d%d%d", &i,&j,&e) != EOF ){ A.data[k].row = i -1; A.data[k].col = j-1; A.data[k].value = e; k++; A.tn = k; } printf("矩阵为\n"); for(i = 0; i < A.tn; i++){ printf("%3d%3d%3d\n", A.data[i].row+1, A.data[i].col+1, A.data[i].value); } printf("转置后:\n"); TransMatrix(A, &B); for(i = 0; i < B.tn; i++){ printf("%3d%3d%3d\n", B.data[i].row+1, B.data[i].col+1, B.data[i].value); } return 0; }

结果:

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3