例如,对于如下形式的m*n阶矩阵, 可以用二维数组表示: a01 (a10 a11 …a1n-1 mxn ●●● (am-10 am-ll…am-ln-l) A=(a0,a1,…,ap (p=n-1或m-1)
例如,对于如下形式的m*n阶矩阵, 可以用二维数组表示: A=(a0 ,a1 ,…,ap ) (p=n-1或m-1) Am×n = a00 a01 … a0n-1 a10 a11 … a1n-1 … … … … am-10 am-11 … am-1n-1 ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )
5.2数组的顺序表示和实现 类型特点: 1)只有引用型操作,没有加工型操作 2)数组是多维的结构,而存储空间是 一个一维的结构。 有两种顺序映象的方式: 1)以行序为主序: 2)以列序为主序
5.2 数组的顺序表示和实现 类型特点: 1) 只有引用型操作,没有加工型操作; 2) 数组是多维的结构,而存储空间是 一个一维的结构。 有两种顺序映象的方式: 1)以行序为主序; 2)以列序为主序
按列序为主序存放 0 aoo 1 a40 20 …a0,n-1 3me40 m a10 .a1n-1 am am-1,0am-1,1…am-1,n-1 2m-1 m44 ao.n4 Loc(ai)=Loc(a00)+( )XL m*n-1 am-1n-1
按列序为主序存放 0 1 m-1 m*n-1 m Loc( aij )= Loc( a00 ) + ( j×m + i )×L a00 a10 … am-1,0 a01 a11 … am-1,1 … a0,n-1 a1,n-1 … am-1,n-1 a00 a01 … a0,n-1 a10 a11 … a1,n-1 … … … … am-1,0 am-1,1 … am-1,n-1 2m-1 ?
0 aoo 按行序为主序存放 1 ao1 3o0 01.a0,n1 a0,4 n a10 …a1,ns am-1,0am-1,1…am-1,n-1 2n-1 a n=1 am4,0 Loc(aii)=Loc(a0o)+()X L am11 m*n-1
按行序为主序存放 0 1 n-1 m*n-1 n Loc( aij )= Loc( a00 ) + ( i×n + j )× L a00 a01 … a0,n-1 a10 a11 … a1,n-1 … am-1,0 am-1,1 … am-1,n-1 2n-1 a00 a01 … a0,n-1 a10 a11 … a1,n-1 … … … … am-1,0 am-1,1 … am-1,n-1 ?
以“行序为主序”的存储映象 例如: a0.0 a0,1 a02 ao.o a,1 a0.2a1,0 a1.1 a12 a1,0 a1,2 二维数组A中任一元素a,的存储位置 LOC(i,j)=LOC(0,0)+(b2×i+j)×L 称为基地址或基址
例如: 称为基地址或基址。 以“行序为主序”的存储映象 二维数组A中任一元素ai,j 的存储位置 LOC(i,j) = LOC(0,0) + (b2×i+j)× a0,1 a0,0 a0,2 a1,0 a1,1 a1,2 a0,1 a0,0 a0,2 a1,0 a1,1 a1,2 L L