数据结构学习笔记(6)--特殊矩阵的压缩存储

1.数组的存储结构

(1)一维数组的存储结构

起始地址:LOC

各数组元素大小相同,且物理上连续存放。

数组元素a[i]的存放地址=LOC+i*sizeof(ElemType)    (0<=i<10)

注:除非题目特别说明,否则数组下标默认从0开始。

(2)二维数组的存储结构

M行N列的二维数组b[M][N]中,

若按行优先存储,则b[i][j]的存储地址=LOC+(i*N+j)*sizeof(ElemType);

若按列优先存储,则b[i][j]的存储地址=LOC+(j*M+i)* sizeof(ElemType).

2.特殊矩阵的存储

(1)对称矩阵的压缩存储

策略:只存储主对角线+下三角区

按行优先原则将各元素存入一维数组中,该一维数组的长度应该设置为(1+n)*n/2。

key:按行优先的原则,a[i][j]是第i(i-1)/2+j个元素,数组下标k=i(i-1)/2+j-1(数组下标从0开始)

ai,j存储在一维数组中对应B[k]

k=i(i-1)/2+j-1,i>=j(下三角区和主对角线元素)

k=j(j-1)/2+i-1,i<j(上三角区元素ai,j=aj,i)

(2)三角矩阵的压缩存储

压缩存储策略:按行优先原则先将下三角存入一维数组中,并在最后一个位置存储常量c

一维数组的长度:n(n+1)/2+1

①上三角区是常数

ai,j转B[k],k=i(i-1)/2+j-1,i>=j(下三角区和主对角线元素)

k=n(n+1)/2,i<j(上三角区元素)

②下三角区是常数

ai,j转B[k],k=(i-1)(2n-i+2)/2+(j-i),j<=j(上三角区和主对角线元素)

k=n(n+1)/2,i>j(下三角区元素)

(3)三对角矩阵的压缩存储

三对角矩阵,又称带状矩阵:

当|i-j|>1时,有ai,j = 0(1<=i,j<=n)

压缩存储策略:

按行优先(或按列优先)原则,只存储带状部分

一维数组的长度:3n-2

前i-1行共3(i-1)-1个元素

ai,j是i行第j-i+2个元素

ai,j是第2i+j+2个元素

ai,j转B[k],k=2i+j-3

(4)稀疏矩阵的压缩矩阵

稀疏矩阵:非零元素远远少于矩阵元素的个数

压缩存储策略:链式存储--十字链表法

  • 17
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值