数据结构之数组
发布日期:2021-05-07 23:21:28 浏览次数:15 分类:精选文章

本文共 1220 字,大约阅读时间需要 4 分钟。

数组(数据结构)

数组的导学

课程结构

本章将从数组的基础知识入手,深入探讨数组的存储结构及其应用。

知识点线索

数组是一种特殊的线性表结构,其每个数据元素本身又是线性表。数组可以采用顺序存储或链式存储方式。

主要内容

  • 掌握顺序存储结构中一维、二维、三维数组元素地址计算方法。
  • 掌握特殊矩阵(对称、三对角)的存储方法和元素地址计算。
  • 掌握稀疏矩阵的存储方法及转置算法。

  • 数组的存储

    不同语境中的数组

  • 高级程序设计语言中的数组

    • 定义方式:如int a[N];,N为符号常量。
    • 存储方式:采用顺序存储。
    • 实现角度:重点讨论其内存布局。
  • 数据结构中的数组

    • 定义:n(n>1)个相同类型数据元素a1、a2、…、an构成的有限序列。
    • 逻辑表示:A=(a1, a2, ..., an)。
    • 存储方式:可为顺序存储或链式存储。

  • 数组的抽象数据类型(ADT)

    数据对象

    数组中的每个数据元素属于同一种数据类型,具有相同类型的元素集合是数组。

    数据关系

    数组中的数据元素是一对一的线性关系。

    基本操作

    数组ADT中定义了一系列基本操作,但本文不做详细阐述。


    维度不同的数组

  • 一维数组

    每个数据元素由值和下标组成。

  • 二维数组

    每个数据元素是相同类型的一维数组的一维数组。

  • 多维数组

    都可以看作是线性表,线性表中的每个数据元素也是一个线性表。


  • 数组的存储地址

    数组的存储结构

    要求数组所有元素存储在一块地址连续的内存单元中。

    一维数组的存储地址

    • 一维数组a[0]~a[9]存储在连续内存空间中,每个元素占L个字节。
    • 元素地址计算:a + i * L,其中i为下标。

    二维数组的存储地址

    • 二维数组可以看成特殊的一维数组。
    • 行优先存储:存储顺序为a1,a2,...,ap。
    • 列优先存储:存储顺序为a1,a2,...,an。

    特殊矩阵的压缩存储

    什么是特殊矩阵

    非零元素或零元素分布有规律的矩阵。

    矩阵的存储方案

  • 直接用二维数组存储

    通常用于一般矩阵。

  • 特殊矩阵压缩存储

    • 对称矩阵:只存储下三角或上三角,包括主对角线。
    • 对角矩阵:只存储主对角线上的非零元素。
    • 稀疏矩阵:只记录非零元素,节省空间。

  • 对称矩阵

    定义

    n阶方阵A[n][n],满足a[i][j] = a[j][i](0≤i,j≤n-1)。

    存储

    只存储下三角或上三角,包括主对角线。


    对角矩阵

    定义

    非零元素集中在主对角线附近的带状区域。

    特征

    • 半带宽b:主对角线上下方各有b条次对角线。
    • (2b+1):矩阵的带宽。

    三对角矩阵(b=1)的压缩存储

    • 只存储带状区内的元素。
    • 共有3n-2个非零元素。

    稀疏矩阵

    定义

    阶数较大的矩阵中非零元素个数远小于总元素个数。

    特点

    • 大多数元素为零。
    • 稀疏因子e = s/(m*n),通常e≤0.05时称为稀疏矩阵。

    存储方式

    • 顺序存储:三元组表。
    • 链式存储:十字链表。

    以上内容结合了对数组数据结构的基础知识和实际应用,全面阐述了数组的存储方式及特殊矩阵的压缩存储方法。

    上一篇:数据结构之树的初探
    下一篇:数据结构之字符串

    发表评论

    最新留言

    哈哈,博客排版真的漂亮呢~
    [***.90.31.176]2025年03月23日 04时56分06秒