您当前的位置: 首页 >  数据结构与算法

MangataTS

暂无认证

  • 0浏览

    0关注

    423博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

考研数据结构与算法(五)数组

MangataTS 发布时间:2022-08-06 06:42:04 ,浏览量:0

考研数据结构与算法(五)数组

文章目录
  • 考研数据结构与算法(五)数组
    • 一、数组的定义
    • 二、二维数组的存储方式
      • 2.1 按行优先
      • 2.2 按列优先
    • 三、特殊矩阵和压缩矩阵
      • 3.1 特殊矩阵
        • 3.1.1 对称矩阵
        • 3.1.2 上(下)三角矩阵
        • 3.1.3 稀疏矩阵
        • 3.1.4 三对角矩阵
    • 四、广义表的定义和存储结构
      • 4.1 广义表的定义
      • 4.2 广义表的存储结构
      • 4.3 广义表的深度和长度

一、数组的定义

数组是由 n ( n > = 1 ) n(n >= 1) n(n>=1) 个相同类型的数据元素构成的有限序列,每个数据元素称为一个数组元素,每个元素在 n n n 个线性关系中的序号称为该元素的下标,下标的取值范围称为数组的维界

数组和线性表的关系:数组是 线性表的推广 。一维数组可视为一个线性表;二维数组可视为其元素也是定长线性表的线性表,以此类推。数组一旦被定义,其维数和维界就不再改变。因此,除结构的初始化和销毁外,数组只会有存取元素和修改元素的操作。

二、二维数组的存储方式

对于数组而言占用的内存是一个连续的空间,那么在二维数组或者是多维数组的情况,对于地址映射的方式大题分为两种:

2.1 按行优先

顾名思义,我们元素地址是一行一行的填充,那么假设当前的二维数组是一个 N × N N\times N N×N 的结构(下标从0开始),每一个元素占用 L L L 的空间,那么假设我们要求 a [ i ] [ j ] a[i][j] a[i][j] 的地址的话:

L o c a [ i ] [ j ] = L o c a [ 0 ] [ 0 ] + [ i × n + j ] × L Loc_{a[i][j]} = Loc_{a[0][0]} + [i\times n + j] \times L Loca[i][j]​=Loca[0][0]​+[i×n+j]×L

2.2 按列优先

这样的话我们是一列一列的填充,那么和上面的假设一样的话,要想求 a [ i ] [ j ] a[i][j] a[i][j] 的地址,则需要小小的变化:

L o c a [ i ] [ j ] = L o c a [ 0 ] [ 0 ] + [ j × n + i ] × L Loc_{a[i][j]} = Loc_{a[0][0]} + [j\times n + i] \times L Loca[i][j]​=Loca[0][0]​+[j×n+i]×L

三、特殊矩阵和压缩矩阵 3.1 特殊矩阵

一个二维矩阵可以根据主对角线分为上三角区和下三角区:

在这里插入图片描述

3.1.1 对称矩阵

如果对于一个二维矩阵而言,其中所有单位元素满足: a [ i ] [ j ] = a [ j ] [ i ] ( 1 < = i , j < = n ) a[i][j] = a[j][i] (1{a,b,c}}

关注
打赏
1665836431
查看更多评论
立即登录/注册

微信扫码登录

0.0418s