数组,矩阵,广义表
文章目录:
- 数组
1.一维数组及其计算数组元素下标
2.二维数组及其计算数组元素下标 - 矩阵(的压缩存储)
1.对称矩阵及其计算下标
2.三角矩阵及其计算下标
3.三对角矩阵及其计算下标(1-3是特殊矩阵的压缩存储哦)
4.稀疏矩阵的存储 - 广义表
注意:这一节的重点是要完全掌握计算数组元素的下标和对应矩阵元素的下标。
1.数组
常用的一般为一维数组和二维数组的逻辑表示,数组一般采取顺序存储,这里要掌握有关一维数组和二维数组元素下标的计算。
这里需要记住一点:对于数组的操作,最常见的两种是查找和修改。(当然存取元素也是对于数组的操作)
(1)一维数组元素下标的计算
这里要求的具体指的是数组下标对应的存储地址,即:
所求数组下标的地址=数组首地址+(所求数组下标到首元素下标的距离)*(每个数组元素所占的几个存储单元)
(2)二维数组元素下标的计算
采取二维数组存储元素并且求其数组下标的对应地址时,分别用行优先和列优先这两种方式进行存储,并且对应的存储方式对应求得数组下标的地址。
1.行优先进行存储
按行优先存储时,对应某数组a[i][j]的前i行已经填满,把前i行的所有的元素再加上列数+1就是对应数组所在的位置。
2.按列优先进行存储
按列优先存储时,某数组a[i][j]的前j列都是满的,将前j列的元素加上行数+1就是此数组所在的位置。
可能我说的不太清楚,下面给出图解:
所以由这个图解可以清楚的了解到按行优先存储和按列优先存储是不同的,这里需要说明的一点是不用死记硬背公式,只要按行优先存储,前i行肯定是满的,按列优先存储,前j列肯定是满的,可直接计算。
下面给出一个题,来检测你是否掌握了数组下标的计算问题
设二维数组A[6][10],每个数组元素占四个存储单元,若按行优先顺序存放的
数组元素A[3][5]的存储地址是1000,求A[0][0]的存储地址。
首先按行优先存储,求A[3][5]在数组内是第几个元素,前3行已满,一共30个元素,再加上第三行存在的列元素,即这个元素是在第三行第6个元素,所以它的前面有35个元素,所以:
x(表示A[0][0]的地址)+4*35=1000;
所以x=860;即A[0[0]的存储地址是860.
2.矩阵的压缩存储
矩阵的压缩存储包括对特殊矩阵和对稀疏矩阵的压缩存储;
特殊矩阵的压缩存储主要是对三种最常见的特殊矩阵进行压缩存储,分别是:对称矩阵,三角矩阵(上三角,下三角),三对角矩阵。
稀疏矩阵的顺序存储采取的是三元组表示法和位地址表示法进行存储;
稀疏存储的链式存储采取的是邻接表表示法和十字链表表示法。
顺序存储时,矩阵用二维数组进行存储
要掌握下面压缩存储的基本概念
在看下面知识之前一定要注意给出的数组下标是否从0开