稀疏矩阵

本文介绍了稀疏矩阵的概念,当非零元素远小于总元素时,采用稀疏矩阵存储可节省空间。讨论了稀疏矩阵的三元组顺序表示,包括如何创建、赋值、读取和转置,并探讨了时间复杂度。此外,提到了十字链表作为另一种存储方式,以优化行和列方向的搜索效率。
摘要由CSDN通过智能技术生成

一个阶数较大的矩阵中的非零元素个数s相对于矩阵元素的总个数t 十分小时,即s<<t时,称该矩阵为稀疏矩阵

例如一100×100的矩阵,若其中只有100个非零元素,就可称其为稀疏矩阵。

一、 稀疏矩阵的三元组表示(顺序)

稀疏矩阵的压缩存储方法是只存储非零元素

由于稀疏矩阵中非零元素的分布没有任何规律,所以在存储非零元素时还必须同时存储该非零元素所对应的行下标和列下标

稀疏矩阵中的每一个非零元素需由一个三元组: (i, j, a i,j),其中i为行,j为列,a i,j表示非零元素。

唯一确定,稀疏矩阵中的所有非零元素构成三元组线性表

假设有一个6×7阶稀疏矩阵A(为图示方便,所取的行列数都很小),A中元素如下图所示。则对应的三元组线性表为:

    ((0,2,1),(1,1,2),(2,0,3),(3,3,5), (4,4,6),(5,5,7),(5,6,4))



若把稀疏矩阵的三元组线性表按顺序存储结构存储,则称为稀疏矩阵的三元组顺序表

三元组顺序表的数据结构可定义如下:

  #define MaxSize  100  //矩阵中非零元素最多个数
  typedef struct 
  {  int r;             //行号
     int c;             //列号
     ElemType d;      //元素值
  } TupNode;            //三元组定义
  typedef struct 
  {  int rows;          //行数值
     int cols;          //列数值
     int nums;          //非零元素个数
     TupNode data[MaxSize];

  } TSMatrix;           //三元组顺序表定义

其中约定:data域中表示的非零元素通常以行序为主序顺序排列,它是一种下标按行有序的存储结构。

这种有序存储结构可简化大多数矩阵运算算法。

(1)从一个二维矩阵创建其三元组表示

        以行序方式扫描二维矩阵A&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值