数据结构----数组与广义表专题

数组与广义表专题

  • 数组的顺序表示和实现
    • 前言
    • 数组中任意一个元素存储地址的计算
      • 一维数组
      • 二维数组
      • 更一般的二维数组
  • 矩阵的压缩存储
    • 前言
    • 对称矩阵
    • 三角矩阵
      • 前言
      • 上三角对应关系
      • 下三角关系
    • 三对角矩阵
      • 下标对应关系
  • 稀疏矩阵
    • 前言
    • 稀疏矩阵的三元组表示
    • 用三元组表示矩阵的转置
    • 优化快速转置

数组的顺序表示和实现

前言

在计算机中,内存储器的结构是一维的 。用一维的内存来表示多维数组,就必须按照某种次序将数组元素排成一个线性序列。

数组中任意一个元素存储地址的计算

一维数组

L o c ( a i ) = L o c ( a 0 ) + i ∗ L ( 0 < = i < n ) Loc(a_i)=Loc(a_0)+i*L(0<=iLoc(ai)=Loc(a0)+iL(0<=i<n)
其中 L为数组中每个元素需要占用L个存储单元。

二维数组

a i j a_{ij} aij位于第i+1行,第j+1列,前面i行一共有 n ∗ i n*i ni个元素,在该列前面又有 j j j个元素。所以二维数组 A m ∗ n A_{m*n} Amn中任一元素 a i j a_{ij} aij的存储位置如下
L O C ( a i j ) = L O C ( a 00 ) + ( i ∗ n + j ) ∗ L LOC(a_{ij}) = LOC(a_{00}) +(i*n+j)*L LOC(aij)=LOC(a00)+(in+j)L

更一般的二维数组

上面假设的是二维数组的行、列下界是从0开始的。在更一般的情况下,二维数组的行下界为 r 1 r_1 r1,行下界为 r 2 r_2 r2,列下界为 c 1 c_1 c1,行下界为 c 2 c_2 c2。即二维数组 A [ r 1 . . r 2 ] [ c 1 . . . c 2 ] A[r_1..r_2][c_1...c_2] A[r1..r

你可能感兴趣的:(#,数据结构,数据结构,线性代数,算法)