正文

我所理解的矩阵022006-01-10 21:32:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/goal00001111/9505.html

分享到:

在实际应用中,我们经常碰到这样一类矩阵,它们的非零元素很少,而且分布没有规律,我们称之为稀疏矩阵。很显然,若用二维数组存储稀疏矩阵,将浪费大量的时间和空间。因此我们对稀疏矩阵一般采取压缩存储的方法,即只存储其非零元素。常用的数据结构有三元组顺序表 和十字链表。 我们先来看三元组顺序表。//------稀疏矩阵的三元组顺序表存储表示-------------------#define MAXSIZE 1000 //假设非零元素的个数最多为1000个 typedef struct{ int x, y;  //该非零元素的行下标和列下标  ElemType e; //该非零元素的值 } Triple;typedef struct{ Triple data[MAXSIZE+1];//非零元素三元组顺序表data[0]未用  int mu, nu, tu;   //矩阵的行数,列数和非零元素的个数 } TSMatrix;在此,data域中表示非零元素的三元组是以行序为主序顺序排列的,这为我们的某些计算将带来方便。创建一个三元组TSMatrix CreateTriple(int m, int n) //构造一个三元组顺序表存储矩阵{ TSMatrix T; int i=0;  puts("请按行序为主序依次输入矩阵的非零元素的行号,列号和元素值,每行输入一个元素的信息:"); printf("注意行号不能超过%d,列号不能超过%d\n", m, n); do {    i++;                                                 scanf("%d%d%d", &T.data[i].x, &T.data[i].y, &T.data[i].e);  fflush(stdin); } while(T.data[i].x > 0 && T.data[i].x <= m && T.data[i].y > 0 && T.data[i].y <= n) ; T.mu = m; T.nu = n; T.tu = i; return T;}二维数组存储稀疏矩阵和三元组顺序表的相互转换 TSMatrix ArrayToTriple(const int A[][N], int m, int n)//二维数组转换为三元组顺序表 { TSMatrix T; int i, j, k;  k = 1; for(i=0; i

阅读(4223) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册