数组中元素的地址
LOC(0)=a, i=0
LOC(i) =
LOC(i-1)+L=a+i*L, i>0
二维数组的行序优先表示
设数组开始存储位置LOC(0,0),存储每一个元素需要L个存储单元,每行n元素,
数组元素a[i][j]的存储元素是:LOC(i,j)=LOC(0,0)+(n*i+j)*L
特殊矩阵的压缩存储:
什么是压缩存储?
若多个元素的值都相同,则只分配一个元素值的存储空间,且零元素不占存储空间
什么样的矩阵能够压缩?
一些特殊矩阵,如:对称矩阵,对角矩阵,三角矩阵,稀疏矩阵等。
什么叫稀疏矩阵?
矩阵中非零元素的个数较少(一般少于5%)
1.对称矩阵的存储结构:
对称矩阵上下三角中的元素数均为:n(n+1)/2
可以以行序为主序将元素存放在一个一维数组sa[n(n+1)/2]中
例如:以行序为主序存储下三角:
a11 a21 a22 a31 a32 ... an1...ann
k= 0 1 2 3 4 n(n-1)/2 n(n+1)/2-1
2.三角矩阵
特点:对角线以下(或者以上)的数据元素(不包括对角线)全部为常数c
(1)存储方法:重复元素c共享一个元素存储空间,共占用n(n+1)/2+1个元素空间:sa[1..n(n+1)/2+1]
上三角矩阵:
(i-1)*(2n-i+2)/2+j-i+1 i<=j
k=
n(n+1)/2+1 i>j
下三角矩阵:
i*(i-1)/2+j i>=j
k=
n(n+1)/2+1 i<j
(2)存储方法:以对角线的顺序存储
3.对角矩阵(带状矩阵)
特点:在n*n的方阵中,所有非零元素都集中在以主对角线为中心的带状区域中,区域外的值全为0,则称为对角矩阵。
常见的有三对角矩阵,五对角矩阵,七对角矩阵等。
稀疏矩阵的压缩存储方法————顺序存储结构 (如图)
三元组顺序表
稀疏矩阵的链式存储结构:(如图)
十字链表