- 考研数据结构与算法(五)数组
- 一、数组的定义
- 二、二维数组的存储方式
- 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 特殊矩阵一个二维矩阵可以根据主对角线分为上三角区和下三角区:
如果对于一个二维矩阵而言,其中所有单位元素满足: a [ i ] [ j ] = a [ j ] [ i ] ( 1 < = i , j < = n ) a[i][j] = a[j][i] (1{a,b,c}}
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?