数组的定义
1:数组:由n(n>=1)个【不为空】相同类型的数据元素构成的有限序列,每个元素在n个线性关系中的序号称为该元素的下标,下标的取值范围称为数组的维界。
2:数组与线性表的关系
答:数组是线性表的推广,一维数组可以看作一个线性表,数组一旦被定义,其维数和维界就不再改变,因此除结构的初始化和销毁外,数组只会有存取元素和修改元素的操作。
3:一维数组
4:二维数组
按照行和列存放后有一个好处:可以实现随机存取。
计算b[I][j]的存储地址。【分行与列】
5:特殊矩阵的压缩
考点:如何映射在一维数组的坐标上
以a32为例,第一行有1个元素,2行2两个,而所求元素在第三行第二个,故推导至aij得
1⃣️:1+2+……+(n-1)I行之前有多少个元素
2⃣️:i行第j个,在1⃣️的基础上加j
实现了对一维数组的映射
注意:因为数组是从0开始的,故最后一位元素的下标要-1,如果题目中给定下标从1开始,那么末位就无需再-1了。
若要求对应的上三角矩阵的元素,根据对称矩阵的特性即可求得。【如下】
【若按列分对称矩阵】
6:三角矩阵的压缩存储
多了一个c,相比对称矩阵的压缩
因为上三角矩阵部分都是常数c
7:三对角矩阵的压缩存储
除去第一行与最后一行,每行都是存储3个元素,因此是3n-2
实现映射:
1:前i-1行共:除去第一行为(3-1)其余皆3
则为3(i-1)-1。
实现反映射:
8:稀疏矩阵
用顺序存储——三元组<行,列,值>
用该方法寻找时只能一个个遍历,失去了随机存取的特性
方法2:十字链表法,链式存储。
9:一些考题