- 数组是一种具体的存储数据的方式,它可以用来实现线性表,但不是只能用来表示线性表,还可以表示,也可以表示图
- 线性表是一个抽象的概念,表里的每个元素都有唯一的前驱和唯一的后继,所以元素们排成一条线,叫“线性”表
- 线性表(数据结构)的底层用数组 (存储结构) 来实现叫做顺序表
1.多维数组
一. 多维数组的概念
二.多维数组的运算
三. 顺序存储方法
例1:一个二维数组A,行下标的范围是1到6,列下标的范围是0到7,每个数组元素用相邻的6个字节存储,存储器按字节编址。
那么,这个数组的体积是288个字节。
答: Volume=mnL=(6-1+1)*(7- 0 +1)6=486=288
矩阵的压缩存储
对称矩阵
三角矩阵
对角矩阵
稀疏矩阵
- 基本概念
- 稀疏矩阵:非零元素的个数远远少于矩阵元素的总数的矩阵(s<<m*n)。
- 压缩存储:只存储非零元素
- 压缩存储特点:由于非零元素的分布是无规律的,在进行压缩存储后,将破坏原采用二维数组存储时所具有的随机存储特性。
稀疏矩阵的压缩存储通常有两种方式:三元组表和十字链表。
稀疏矩阵的压缩存储
问题:
- 如果只存储稀疏矩阵中的非零元素,那这些元素的位置信息该如何表示?
解决思路:
- 对每个非零元素增开若干存储单元,例如存放其所在的行号和列号,便可准确反映该元素所在位置。
实现方法:
- 将每个非零元素用一个三元组(i,j,aij)来表示,则每个稀疏矩阵可用一个三元组表来表示。
三元组表
定义:
用一个三元组(i,j,aij)来表示稀疏矩阵中的一个非零元素aij,将表示稀疏矩阵中所有非零元素的三元组按行优先的原则顺序排列,得到一个其结点均为三元组的线性表,该表称为三元组表(结构组)。
所以,为了唯一确定一个稀疏矩阵,还必须存储矩阵的行、列数。为了运算实现的方便,通常将稀疏矩阵的行、列数与三元组表存储在一起。
广义表
补充说明:对于LS=(a1,a2,…,an)
1)LS:广义表的名字
2)n: 广义表的长度。E=(a,E )
3)如果ai是广义表, 则称它为LS的子表
4)书写时,用大写字母表示广义表,小写字母表示原子
5)若LS非空(n>=1),则a1是LS的表头,(a2,a3,…,an)构成的表称为LS的表尾
6)表是递归定义的,一个表的深度定义为表展开后所含括号的层数.D=(A,B,C )
7)如果规定任何表都是有名字的,为了即表明每个表的名字,又说明它的组成,则可以在每个表的前面冠以该表的名称。 D (A( ),B ( b,c,d), C (a, B(b,c,d) ) );