diff --git a/数据结构/栈和队列/.DS_Store b/数据结构/栈和队列/.DS_Store index 2714372..2e8557e 100644 Binary files a/数据结构/栈和队列/.DS_Store and b/数据结构/栈和队列/.DS_Store differ diff --git a/数据结构/栈和队列/8.特殊矩阵的压缩存储.md b/数据结构/栈和队列/8.特殊矩阵的压缩存储.md new file mode 100644 index 0000000..9ba49ae --- /dev/null +++ b/数据结构/栈和队列/8.特殊矩阵的压缩存储.md @@ -0,0 +1,67 @@ + + + +## 特殊矩阵的压缩存储 + +> 这部分知识我个人觉得以了解为主,复习、学习的时候还是要以前面的部分为主! + +矩阵在`计算机图形学`、`工程计算`中占有举足轻重的地位。 + + +### 数组的定义 + +`数组`: 由n(n≥1)个相同类型的数据元素构成的有限序列。 + +每个数据元素称为一个数组元素,同时每个元素受n个线性关系的约束,**每个元素在n个线性关系中的序号称为元素的`下标`**,称为该数组为n的数组。 + +数组和线性表的关系: +- 数组是线性表的推广。 +- 数组一旦被定义,维数和维界就不再改变。 +- 除了结构的初始化和销毁外,数组只会有存取元素和修改元素的操作。 + + +一维数组可以看做是一个线性表 + +二维数组可以看做元素是线性表的线性表 + +.... + + +### 矩阵的压缩存储 + + +`压缩存储`:多个值相同的元素只分配一个存储空间,对零元素不分配存储空间---->节省存储空间。 + +`特殊矩阵`:具有很多相同矩阵元素或零元素,并且这些相同矩阵元素或零元素的分布有一定规律性的矩阵。 + +- 对称矩阵 +- 上、下三角矩阵 +- 对角矩阵(带状矩阵) +- .... + +这里如果学过线性代数这本书,其实也就很好理解(赶紧去把数学知识捡起来鸭,噗呲哈哈啊哈) + +`稀疏矩阵`:矩阵元素个数s相对于矩阵中非零元素的个数t来说非常多、差距非常大,即`s>>t的矩阵`可以叫`稀疏矩阵` + + +注意: + +- 常规方法来存储稀疏矩阵,会想当浪费存储空间,所以稀疏矩阵只需要存储非零元素 +- 通常非零元素的分布是没有规律的,除了存储非零元素外,还需要存储元素所在位置的行和列 +- 寻相互存储三元组 `<行标,列表,值>` + + + +![](/数据结构/栈和队列/images/稀疏矩阵的存储变换.png) + +三元组的结点存储了行标(row)、列表(col)、值(value)三种信息,是主要用来存储稀疏矩阵的一种数据结构。 + + +**注意:矩阵压缩存储的目的就是为了节省空间,已经存过的就不存或者少存(经典想法)** \ No newline at end of file diff --git a/数据结构/栈和队列/images/稀疏矩阵的存储变换.png b/数据结构/栈和队列/images/稀疏矩阵的存储变换.png new file mode 100644 index 0000000..8956501 Binary files /dev/null and b/数据结构/栈和队列/images/稀疏矩阵的存储变换.png differ