02第一章数据结构一(线性)概要.ppt

02第一章数据结构一(线性)概要

---软件技术基础--- * 1) 二维数组 二维数组m行n列可以看作是m个或n个一维数组: Amxn = ((a11a12…a1n),(a21a22…a2n),..(am1am2…amn)) ---软件技术基础--- * 2) 数组的基本操作 数组有两种基本的操作: 给定下标,存取相应的数组元素; 给定下标,修改相应数组元素的值。 上两种操作可以归结为: 给定一组下标,确定与之相对应的数据元素存储地址。 数组是如何存储的呢? ---软件技术基础--- * 3) 数组的顺序存储结构 数组元素是连续存放的,因此采用顺序存储结构; 无论几维数组,在计算机中都是按一维数组来存放。数组存放通常采用两种方式: 按行优先顺序 按列优先顺序 ---软件技术基础--- * 按行优先顺序存储 按行优先顺序存储是将数组看作若干个行向量。例如,二维数组Amn,可以看作m个行向量,每个行向量n个元素。数组中的每个元素由元素的两个下标表达式唯一的确定。 地址计算公式: LOC(aij)=LOC(a11)+((i-1)×n+(j-1))×S 其中,S是每个元素所占的存储单元。 二维数组按行优先存储举例 ---软件技术基础--- * 二维数组按行优先存储举例 有二维数组Amn如下: 其存储方式及各元素存储位置计算如下: LOC(aij)=LOC(a11)+((i-1)×n+(j-1))×S 1 2 3 4 5 6 7 8 9 10 11 12 ((a11,a12,a13,a14),(a21,a22,a23,a24),(a31,a32,a33,a34)) LOC(a23)= LOC(a11)+((2-1) × 4+(3-1))×1= 7 LOC(a34)= 1 +((3-1) × 4 +(4-1)) ×1= 12 LOC(a14)= 1 +((1-1)×4 +(4-1)) ×1= 4 ---软件技术基础--- * 按列优先顺序存储 按列优先顺序存放是将数组看作若干个列向量。例如,二维数组Amn,可以看作n个列向量,每个列向量m个元素。数组中的每个元素由元素的两个下标表达式唯一的确定。 地址计算公式: LOC(aij)=LOC(a11)+((j-1)×m+(i-1))×S 其中,S 是每个元素所占的存储单元。 二维数组按列优先存储举例 ---软件技术基础--- * 二维数组按列优先存储举例 有二维数组如下: 其存储方式及各元素存储位置计算如下: LOC(aij)=LOC(a11)+((j-1)×m+(i-1))×S 1 2 3 4 5 6 7 8 9 10 11 12 (a11,a21,a31),(a12,a22,a32),(a13,a23,a33),(a14,a24,a34)) LOC(a23)= LOC(a11)+(3-1)x 3 +(2-1)= 8 LOC(a34)= 1 + (4-1)x 3 + (3-1) = 12 LOC(a14)= 1 + (4-1)x 3 + (1-1) = 10 ---软件技术基础--- * 4) 矩阵的压缩存储结构 引入: 实际工程问题中推导出的数组常常是高阶、含大量零元素的矩阵,或者是些有规律排列的元素。为了节省存储空间,通常是对这类矩阵进行压缩存储。 压缩的含义是: 相同值的多个元素占用一个存储单元; 零元素不分配存储单元。 ---软件技术基础--- * 可以通过压缩方式存储的常见矩阵 对称矩阵 存储主对角线以上(下)的元素; 上(下)三角矩阵 只存储三角阵元素; 带状矩阵 只存储带状元素; 稀疏矩阵 只存储非零元素; 大量相同元素矩阵 存储某元素和重复个数。 ---软件技术基础--- * 【例1】对称矩阵的压缩存储 对称矩阵的元素满足: aij = aji 1 ? i ,j ? n 因此将n×n 个元素压缩存放到 n(n+1)/2 个单元的一维数组S((n+1)×n/2)中。 aij的地址为: i(i-1)/2+j 当i?j LOC(aij) = j(j-1)/2+i 当ij 实例如下 ---软件技术基础--- * 设有A3x3矩阵, a11 A3x3 = a21 a22 a31 a32 a33 存于一维数组S[6]

文档评论(0)

1亿VIP精品文档

相关文档