数组的顺序存储:按行与按列存储解析

需积分: 9 0 下载量 130 浏览量 更新于2024-08-20 收藏 701KB PPT 举报
"数组的顺序存储结构主要讨论了如何在计算机的一维存储结构中存放多维数组的问题。通过约定特定的次序,如按行存储或按列存储,可以将多维数组转换为线性序列并存入内存。一旦次序确定,就能根据公式计算出数组元素的存储地址。此外,数组作为数据结构有其独特的特点,如所有元素具有同一类型,维数和维界固定,以及基本操作主要是存取和修改元素。课堂练习涉及到数组体积计算、元素地址计算以及按行存储时的元素定位。" 在深入讨论数组的顺序存储结构之前,首先理解数组的基本概念是必要的。数组是由一组具有相同名称且下标不同的变量构成的数据集合,它们共享同一类型,并且在定义后,数组的维数和界限是不可变的。数组可以被视为一种特殊类型的线性表,其中元素本身可能包含其他线性结构。 当面对计算机的一维存储结构时,处理多维数组的一个常见方法是采用顺序存储。例如,二维数组可以按照行优先或列优先的方式排列。行优先意味着先存储所有行的首元素,而列优先则是先存储所有列的首元素。这样做的好处是,只要规定了次序,就可以通过简单的公式计算出数组中任意元素的存储位置。 对于二维数组,若采用行优先(主序)存储,元素`aij`的地址可以通过以下公式计算:`Loc(aij) = Loc(a11) + [(j-1)m + (i-1)] * l`,其中`m`是每行的元素数量,`n`是行数,`l`是单个元素的字节数。列优先的情况则会有所不同,但同样遵循类似的逻辑。 课堂练习的解答如下: 1. 二维数组的体积计算为(行数+1) * (列数+1) * 每个元素的字节数,因此体积是(6+1) * (7+1) * 6 = 336个字节。 2. 对于按行存储的数组,元素A[8,5]的地址是首地址加上(行号-1) * (列数 * 每个元素字节数) + (列号-1) * 每个元素字节数,即SA + (8-1) * 3 * 10 + (5-1) * 3 = SA + 243。所以答案是SA+243。 3. 对于按列序为主序存储的数组a[0…5,0…6],元素a[4][5]的地址计算为基地址加上(行号 * 每行元素个数 * 每个元素字节数) + (列号 * 每个元素字节数),即1000 + (4 * 6 * 5) + (5 * 5) = 1000 + 120 + 25 = 1145。 数组的顺序存储结构在实际编程中非常重要,因为它决定了数组元素在内存中的分布,从而影响到程序的效率和内存管理。了解这些计算方法和原则对于优化算法和编写高效代码至关重要。