数据结构的学习可以分为八个模块:1.绪论,2.线性表,3.栈和队列,4.串、数组,5.树与二叉树,6.图,7.查找,8.排序。
栈和队列部分可分为:
:
其中特殊矩阵部分有以下几个要点:
3对称矩阵压缩存储∶指为多个值相同的元素只分配一个存储空间,对零元素不分配存储空间,其目的是节省存储空间。
特殊矩阵∶指具有许多相同矩阵元素或零元素,并且这些相同矩阵元素或零元素的分布有一定规律性的矩阵。常见的特殊矩阵有对称矩阵、上(下)三角矩阵、对角矩阵等。
特殊矩阵的压缩存储方法∶找出特殊矩阵中值相同的矩阵元素的分布规律,把那些呈现规律性分布的、值相同的多个矩阵元素压缩存储到一个存储空间中。
若对一个n阶方阵A[1...n][1...n]中的任意一个元素ai,j,都有:
ai,j=aj,i,(1≤i,j≤n)
则称其为对称矩阵。对于一个n阶方阵,其中的元素可以划分为3个部分,即上三角区、主对角线和下三角区。
对于n阶对称矩阵,上三角区的所有元素和下三角区的对应元素相同,若仍采用二维数组存放,则会浪费几乎一半的空间,为此将对称矩阵A[1...n][1...n]存放在一维数组B[n(n+1)/2]中,即元素ai,j只存放在bk中。只存放下三角部分(含主对角)的元素。
在数组B中,位于元素ai,j(i≥j)前面的元素个数为:
第1行∶1个元素(a1,1)。
第2行∶2个元素(a2,1,a2,2)。
......
第i-1行∶i-1个元素(ai-1,1,ai-1,2,…,ai-1,i-1)。
第i行∶j-1个元素(ai,1,ai,2,…,ai,j-1)。
因此,元素ai,j在数组B中的下标为:
k=1+2+…+(i-1)+j-1=i(i-1)/2+j-1(数组下标从0开始)。元素下标之间的对应关系如下∶
4三角矩阵下三角矩阵中,上三角区的所有元素均为同一常量。其存储思想与对称矩阵类似,不同之处在于存储完下三角区和主对角线上的元素之后,紧接着存储对角线上方的常量一次,故可以将下三角矩阵A[1...n][1...n]压缩存储在B[n(n+1)/2]中。
元素下标之间的对应关系为:
下三角矩阵在内存中的压缩存储形式:
上三角矩阵中,下三角区的所有元素均为同一常量。只需存储主对角线、上三角区上的元素和下三角区的常量一次,可将其压缩存储在B[n(n+1)/2]中。
在数组B中,位于元素ai,j(i≤j)前面的元素个数为
第1行∶n个元素
第2行∶n-1个元素
......
第i-1行∶n-i+2个元素
第i行∶j-i个元素
因此,元素ai,j在数组B中的下标k=n+(n-1)+…+(n-i+2)+9j-i+1)-1=(i-1)(2n-i+2)/2+(j-i)。
因此,元素下标之间的对应关系如下:
上三角矩阵在内存中的压缩存储形式:
本文章已加入菜单栏导航,可在“课程学习-数据结构”处查看。
扫码