理论教育 数据结构高分笔记:数组元素存储顺序及下标计算详解

数据结构高分笔记:数组元素存储顺序及下标计算详解

时间:2023-11-03 理论教育 版权反馈
【摘要】:数组一般采取顺序存储,在考研中涉及最多的就是数组元素下标的计算问题。二维数组元素位置计算稍微复杂,要考虑行优先和列优先两种情况,下面进行详细介绍。图5-1 数组元素存储情况 设二维数组A[6][10],每个数组元素占4个存储单元,若按行优先顺序存放的数组元素A[3][5]的存储地址是1000,求A[0][0]的存储地址。

数据结构高分笔记:数组元素存储顺序及下标计算详解

1.考研中常用的两种数组的逻辑表示

(1)一维数组:

(a0,a1,…,an-1

(2)二维数组:

978-7-111-58746-0-Chapter05-1.jpg

可见二维数组是元素是一维数组的一维数组。

数组一般采取顺序存储,在考研中涉及最多的就是数组元素下标的计算问题。一维数组比较简单,知道a0的位置,可以根据相对于a0偏移量求出其后任一元素ai的位置。例如,a0存放在内存100的位置,则ai存放在100+i的位置。二维数组元素位置计算稍微复杂,要考虑行优先和列优先两种情况,下面进行详细介绍。

2.二维数组的行优先和列优先存储(www.daowen.com)

定义二维数组a:inta[4][5]。由图5-1可知,对于行优先,a[2][3]是第几个元素的求法为:行标2之前的行已填满元素,每行元素有5个,行标2所指的行的元素个数由列标指示出来,因此a[2][3]是第2×5+3+1=14个元素,a[2][3]之前有13个元素。列优先的情况类似,下面看一道例题。

978-7-111-58746-0-Chapter05-2.jpg

图5-1 数组元素存储情况

例5-1】 设二维数组A[6][10],每个数组元素占4个存储单元,若按行优先顺序存放的数组元素A[3][5]的存储地址是1000,求A[0][0]的存储地址。

分析:A[][]数组按行优先存储,则对于A[3][5],行标3之前的所有元素都已经填满,每行元素有10个,一共有3行;行标3所指的行中元素个数由列标指示,有6个元素。因此,A[3][5]之前一共有10×3+5=35个元素,A[3][5]的地址为1000,则A[0][0]的地址为1000-35×4=860。

说明:考生要牢记图5-1,图中箭头指示了不同优先次序的不同存储方法,凡是带有按照“行优先”或者按照“列优先”字眼的求数组中元素地址的题目,都可以用此解决。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈