目录
1. 一维数组、二维数组
矩阵很方便的使用数组来存储,所以先介绍下数组相关知识点!
规定行优先或者列优先存储原则,本质目的都是想要把非线性的二维数组把它拉成一个线性的形状,因为计算机内存的存储空间都是线性的!
把这些数据有规律的存入内存之后,带来的好处就是可以实现随机存取,即只要给出元素在数组中的行号和列号,计算机根据起始地址就可以直接算出这个行号和列号所对应元素存放地址!
行优先存储下,如何计算某一元素存放地址:
所以,二维数组也具有随机存储的特性!
2. 对称矩阵
站在程序员的角度来看,将一个矩阵的数据存储之后,最终的目的是想要用这些数据。但是当在使用这些数据的时候,肯定是希望从自己的视角看到的是一个矩阵,而不是一个一维数组。即希望用矩阵的下标来访问各个元素而不是直接使用一维数组的某个下标。 为了实现这个目的,可以自己实现一个映射函数 ( 矩阵下标 —> 一维数组下标 ) ,也是考研中最喜欢考察的点!
如果题目中告诉数组下标从1开始,就不用减1。
如果访问的是上三角区的元素呢? 那就根据对称矩阵的 “对称” 性质转化为下三角元素。
如果是按照列优先的原则将各元素存入一维数组中呢?那这种情况怎么将矩阵下标转换为一维数组的下标?思路是相同的!算出列优先排列下的 该元素是第几个元素即可。
3. 三角矩阵
4.三对角矩阵的压缩存储
王道书上的 k 可以理解为要找的元素前面有 k 个元素。
5. 稀疏矩阵
这里可以定义一个 struct 的结构类型,然后再定义该类型的一个数组就能存储这个表格的数据!