分类: C/C++
2010-08-05 22:01:49
多维数组元素之间的关系既不是线性的也不是树形的,但所有元素必须具有相同数据类型
数组存储在一片相邻的存储单元里,有行优先存储和列优先存储
A[m][n],下标指定从0开始,a[i][j]
行优先存储:前面有0。。。i-1,一共i行,一共i*n个元素,列前面有j个元素,所有地址为loc(a[0][0])+(i*n+j)*k(k为一个元素占的单元大小)
列优先存储:a[i][j]前面有j列,一共j*m个元素,i行前面有i个元素,一共j*m+i个元素
地址为loc(a[0][0])+(j*m+n)*k
对称矩阵:n阶方阵满足a[i][j]=a[j][i],则成为n阶对称矩阵,只保存上三角或下三角元素和对角线上的元素即可。需要(1+2+3+……+n=(1+n)*n/2)个存储单元
保存下三角元素(i>=j)行优先存储:a[i][j],前面有i行,一共(1+2+3+i=(1+i)*i/2)个元素,j列前面有j个元素,一共有(1+i)*i/2+j个元素
保存下三角元素(i>=j)列优先存储:a[i][j],前面有j列,计算过程类似以行优先
对角矩阵,一个n阶方阵的所有非零元素都集中在对角线为中心的带状区域内,成为对角矩阵,对角线两边各|m/2|条次对角线
三角矩阵:分为上三角和下三角矩阵,上三角矩阵的下三角元素(不包括对角线)都是均值C,下三角矩阵相反,重复元素可以只保存一个。