数据结构 :第四章 字符串、数组和特殊矩阵
(10.10)
一、数组和线性表的区别:
1.数组是静态的 线性表是动态的
2.数组不能进行插入,删除的操作(数组元素一定)
3.关系的操作:数组的数据之间有多个关系(多维),线性表是一个 关系
二、二维数组
1.求二维数组按行存储 的元素aij的位置
loc(aij)=loc(a[0][0])+(i*n+j)*len;
2.求二维数组按列存储的元素aij的位置
loc(aij)=loc(a[0][0])+(j*n+i)*len;
###三、特殊矩阵
1.二维数组经常代表矩阵:如对称矩阵,三角矩阵,带状矩阵和稀疏矩阵。
2.对称矩阵的压缩存储:
存储一般
①下三角元素按行存储的位置:
loc(aij)=loc(a[0][0])+{(1+2+3…+i)+j}*len;
②上三角元素按列存储的位置:
loc(aij)=loc(a[0][0])+{(1+2+3…+j)+i}*len;
3.带状矩阵的压缩存储
① 2b+1带状矩阵的带宽
b条对角线,半带宽
半带宽为b的带状矩阵
②分析带宽矩阵的结构
元素 ai-1,j aij, ai,j+1
loc(aij)=loc(a[0][0])+(i*(2b+1)-1)+(j-(i-1))*len;
四、稀疏矩阵
稀疏矩阵元素中零元素多。
稀疏矩阵的顺序存储:
三元组表示法:
row col val
down right
带辅助行向量的二元数组的表示法;
十字链表法:
连接有有效值的结点。
和位地址表示法;
p87