首页 > 代码库 > 数组的实现

数组的实现

  由于存储单元是一维的结构,而数组是个多维的结构,则用一组连续的存储单元存放数据元素就有次序约定的问题了。假设现在有一个三维数组A[5][6][7],现在初始化其数据结构时,不难联想到,首先要说明存放的数据类型(也可以是数组元素的基址,但元素的类型是一定要说明的),其次,就是数组的维数,还有就是每一维的大小。现在继续考虑,假设现在这个数组已经被我们定义成了这个结构,当我们想要取出元素A[3][2][1],由于存储单元是连续的顺序存储结构,必须要算出其相对于A[0][0][0]的地址,不难算出其结果:A[3][2][1]=3*(6*7)+2*7+2。我们可以总结对任意的n维数组,设每一维的大小为bi,其元素的存储位置如下:

  Locate(j1,j2,....,jn)=Locate(0,0,....,0)+[(j1*bn*bn-1*....*b2)+(j2*bn*bn-1*....*b3)+....+(jn-1*bn)+(jn)]

        

数组的实现