数据结构中的对称矩阵:
1.对称矩阵
(1)对称矩阵
在一个n阶方阵A中,若元素满足下述性质:
aij=aji0≤i,j≤n-1
则称A为对称矩阵。
(2)对称矩阵的压缩存储
对称矩阵中的元素关于主对角线对称,故只要存储矩阵中上三角或下三角中的元素,让每两个对称的元素共享一个存储空间。这样,能节约近一半的存储空间。
①按"行优先顺序"存储主对角线(包括对角线)以下的元素
即按a00,a10,a11,……,an-1,0,an-1,1…,an-1,n-1次序存放在一个向量sa[0..n(n+1)/2-1]中(下三角矩阵中,元素总数为n(n+1)/2)。
其中:
sa[0]=a00,
sa[1]=a10,
……,
sa[n(n+1)/2-1]=an-1,n-1
②元素aij的存放位置
aij元素前有i行(从第0行到第i-1行),一共有:
1+2+…+i=i×(i+1)/2个元素;
在第i行上,aij之前恰有j个元素(即ai0,ai1,…,ai,j-1),因此有:
sa[i×(i+1)/2+j]=aij
③aij和sa[k]之间的对应关系:
若i≥j,k=i×(i+1)/2+j0≤k
k=i×(i+1)/2+j0≤k
LOC(aij)=LOC(sa[k])
=LOC(sa[0])+k×d=LOC(sa[0])+[I×(I+1)/2+J]×d
通过下标变换公式,能立即找到矩阵元素aij在其压缩存储表示sa中的对应位置k。因此是随机存取结构。