数据结构复习备忘录(1):矩阵的压缩存储

一、特殊矩阵

1. 上(下)三角矩阵

上三角矩阵,以为主序,数组下标从0开始:
  L o c ( a i j ) = k = ( j − 1 ) j 2 + i − 1 \ Loc(a_{ij})=k=\frac{(j-1)j}2+i-1  Loc(aij)=k=2(j1)j+i1,数组大小   M = n ( n + 1 ) 2 \ M=\frac{n(n+1)}2  M=2n(n+1)

下三角矩阵,以为主序,数组下标从0开始:
  L o c ( a i j ) = k = ( i − 1 ) i 2 + j − 1 \ Loc(a_{ij})=k=\frac{(i-1)i}2+j-1  Loc(aij)=k=2(i1)i+j1,数组大小   M = n ( n + 1 ) 2 \ M=\frac{n(n+1)}2  M=2n(n+1)

若除三角部分以外的元素均为常数C,存放在数组最后一个元素,则数组大小+1。

2. 对称矩阵

只存储上/下三角部分。

3. 对角矩阵

(2d+1对角矩阵,以行为主序压缩存储)
矩阵元素下标从0开始
L o c ( a i j ) = L o c ( a 00 ) + ( 2 d + 1 ) i − d + j − ( i − d ) = L o c ( a 00 ) + ( 2 d + 1 ) i + j − i ( 0 ≤ i , j ≤ n − 1 , ∣ i − j ∣ ≤ d ) \begin{aligned} Loc(a_{ij}) &= Loc(a_{00})+(2d+1)i-d+j-(i-d)\\ &=Loc(a_{00})+(2d+1)i+j-i\\ (0&\leq i, j\leq n-1, \left|i-j\right|\leq d) \end{aligned} Loc(aij)(0=Loc(a00)+(2d+1)id+j(id)=Loc(a00)+(2d+1)i+jii,jn1,ijd)
矩阵元素下标从1开始
L o c ( a i j ) = L o c ( a 11 ) + ( 2 d + 1 ) ( i − 1 ) − d + j − i + d = L o c ( a 11 ) + ( 2 d + 1 ) ( i − 1 ) + j − i ( 1 ≤ i , j ≤ n , ∣ i − j ∣ ≤ d ) \begin{aligned} Loc(a_{ij}) &= Loc(a_{11})+(2d+1)(i-1)-d+j-i+d\\ &=Loc(a_{11})+(2d+1)(i-1)+j-i\\ (1&\leq i, j\leq n, \left|i-j\right|\leq d) \end{aligned} Loc(aij)(1=Loc(a11)+(2d+1)(i1)d+ji+d=Loc(a11)+(2d+1)(i1)+jii,jn,ijd)

二、稀疏矩阵

在这里插入图片描述

1. 三元组顺序表

在这里插入图片描述

2. 行逻辑连接的顺序表

在这里插入图片描述

3. 十字链表

每个结点非0元的结点结构:
row, col, val分别代表非0元的行号,列号和值
down为指针,指向该非0元同一列的下一个非0元
right为指针,指向该非0元同一行的下一个非0元
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值