第五章多维数组和广义表5
1数组的定义一、数组的定义数组(Arrays)是由一组类型相同的数据元素构造而成的
它的每个元素由一个值和一组下标确定
二维数组每个元素aij均属于两个向量:第i行的行向量和第j列的列向量
最多可以有两个直接前驱和两个直接后继
二、数组的顺序存储结构数组的顺序存储结构指的是用一组连续的存储单元依次存放数组元素
行优先顺序:将数组元素按行向量排列,第i+1个行向量紧接在第i个行向量后面
列优先顺序:将数组元素按列向量排列,第j+1个列向量紧接在第j个列向量之后
二维数组Amn按“行优先顺序”存储在内存中,假设每个元素占d个存储单元,则aij的地址计算函数为:LOC(aij)=LOC(a11)+[(i-1)×n+j-1]×d对应C语言的二维数组:DataTypeA[m][n];数组A[m][n]的两个下标的下界均为0,上界分别为m-1、n-1,每个数据元素占k个存储单元,二维数组中任一元素a[i,j]的存储位置可由下列公式确定
loc[i,j]=loc[0,0]+(n*i+j)*k其中,loc[0,0]是A[0][0]的存储位置,它是该二维数组的起始地址
loc[i,j]是A[i][j]的存储位置
这个式子确定了C语言的二维数组元素的位置和下标的关系
2矩阵的压缩存储实际工程问题中推导出的数组常常是高阶、含大量零元素的矩阵,或者是些有规律排列的元素
为了节省存储空间,通常是对这类矩阵进行压缩存储
压缩存储:相同值的多个非零元素占用一个存储单元;零元素不分配存储单元
一、特殊矩阵所谓特殊矩阵(SpecialMatrices)是指非零元素或零元素的分布有一定规律的矩阵
几种特殊矩阵的压缩存储:对称矩阵在一个n阶方阵A中,若元素满足下述性质:aij=aji0≤i,j≤n-1则称A为对称矩阵
如图所示:存储元素为:{1,5,0,1,8,9,3,0,