【2025年软考中级】第三章数据结构3.4 数组与矩阵

发布于:2025-06-23 ⋅ 阅读:(20) ⋅ 点赞:(0)

数组与矩阵

数组

数组的基本概念

数组是定长线性表在维度上的扩展,本质是线性表的嵌套结构(线性表中的元素本身又是一个线性表)。其核心特性包括:

  • 同构性:所有数据元素类型相同、结构一致(如二维数组int arr[3][4]中每个元素均为整数)。
  • 下标约束:每个维度的下标有明确上下界,且按顺序排列(通常从0开始)。
  • 操作限制:数组元素数目固定,一般不支持插入/删除操作,更适合查询和修改,因此优先采用顺序存储结构

数组的存储与地址计算

数组采用顺序存储时,可通过下标快速计算元素地址。以二维数组为例,假设每个元素占用len字节,起始地址为a,存储方式分为:

行优先存储

按行依次存储每一行元素,地址计算公式(从0开始编号):

a d d r ( i , j ) = a + ( i × n + j ) × l e n addr(i,j) = a + (i × n + j) × len addr(i,j)=a+(i×n+j)×len
n为列数,i为行号,j为列号)

列优先存储

按列依次存储每一列元素,地址计算公式:
a d d r ( i , j ) = a + ( j × m + i ) × l e n addr(i,j) = a + (j × m + i) × len addr(i,j)=a+(j×m+i)×len
m为行数,i为行号,j为列号)

地址计算图示

矩阵

矩阵的基本概念

矩阵是二维数组的应用形式,由mn列元素组成。常见类型包括:

  • 方阵:行数=列数(m=n)。
  • 三角矩阵:上三角矩阵(i>j时元素为0)或下三角矩阵(i<j时元素为0)。
  • 稀疏矩阵:非零元素数目远少于零元素,且分布无规律。

稀疏矩阵的存储

为节省空间,稀疏矩阵采用压缩存储,仅记录非零元素信息:

三元组表(Triplet Table)

存储非零元素的(行号,列号,值)三元组,按行优先排列。

  • 示例矩阵
    0 0 3 0  
    0 2 0 0  
    1 0 0 0  
    
  • 三元组表表示
十字链表(Orthogonal List)

用链表存储非零元素,每个节点包含行指针、列指针、值,形成行列双向链表。

  • 结构示意图

特殊矩阵的压缩存储

对于有规律的矩阵(如对称矩阵、对角矩阵),可利用规律进一步压缩:

  • 对称矩阵:满足A[i][j] = A[j][i],仅存储上三角或下三角部分,节省一半空间。
  • 对角矩阵:非零元素集中在主对角线附近,按对角线顺序存储元素,减少无效空间占用。

通过合理选择存储结构,可显著提升矩阵运算效率(如转置、乘法),并降低内存消耗。


网站公告

今日签到

点亮在社区的每一天
去签到