数组 按行,列存储

二维数组

二维数组Amn可视为由m个行向量组成的向量,或由n个列向量组成的向量。

 

数组的顺序存储方式

由于计算机内存是一维的,多维数组的元素应排成线性序列后存人存储器。

数组一般不做插入和删除操作,即结构中元素个数和元素间关系不变化。一般采用顺序存储方法表示数组。


(1) 行优先顺序
将数组元素按行向量排列,第i+1个行向量紧接在第i个行向量后面。
例: 二维数组Amn的按行优先存储的线性序列为:
a11,a12,…,a1n,a21,a22,…,a2n,……,am1,am2,…,amn

注意:
PASCAL和C语言中,数组按行优先顺序存储。

行优先顺序推广到多维数组,可规定为先排最右的下标。

(2) 列优先顺序

将数组元素按列向量排列,第i+1个列向量紧接在第i个列向量后面。

例: 二维数组Amn的按列优先存储的线性序列为:
a11,a21,…,am1,a12,a22,…,am2,……a1n,a2n,…amn

注意:
FORTRAN语言中,数组按列优先顺序存储。
列优先顺序推广到多维数组,可规定为先排最左的下标。

数组元素的地址计算公式

(1) 按行优先顺序存储的二维数组Amn地址计算公式
LOC(aij)=LOC(a11)+[(i-1)×n+j-1]×d

其中:
LOC(a11)是开始结点的存放地址(即基地址)
d为每个元素所占的存储单元数 由地址计算公式可得,数组中任一元素可通过地址公式在相同时间内存取。即顺序存储的数组是随机存取结构。

 

(2) 按列优先顺序存储的二维数组Amn地址计算公式
LOC(aij)=LOC(a11)+[(j-1)×m+i-1]×d

你可能感兴趣的:(c)