RISE ONLY THIS
.COM
从逻辑结构上看,多维数组是一维数组的扩充;但从存储结构上看,一维数组是多维数 组的特例。在程序设计语言中,重点是数组使用,而本节重点是数组的内部实现,即如何在 计算机内部处理数组,其中主要问题是数组的存储结构与寻址方法。
数组(Array)是由下标与值组成的数偶的有序集合,即它的每个元素是由一个值与一 组下标所确定的。对于每组有定义的下标总有一个相应的数值与之对应,且这些值都是同 一类型的。下标决定了元素的位置,数组中各元素之间的逻辑关系由下标体现岀来,下标的 个数决定了数组的维数。因为由下标所决定的位置之间的关系可以看成是一种有序的线性 关系,因此可以说数组是有限个相同类型数据元素组成的有序序列。从这个角度看,数组是 线性表的推广,其逻辑结构实际上是一种线性结构。
一维数组(a。,少,…,a。—Q由n个元素组成,每个元素除具有相同类型的值外,还有一个 下标以确定元素的位置,显然一维数组就是一个线性表。一维数组在计算机内是存放在一 块连续的存储单元中,适合于随机查找。
二维数组由mXn个元素组成,元素之间是有规则的排列。每个元素由相同类型的值 及一对能够确定元素位置的下标组成。二维数组可以看成是一维数组的推广。
例如,设A是一个有m行n列的二维数组。其中,每个元素是一个列 向量形式的线性表;或者是一个行向量形式的线性表,。 因此,二维数组可以看成是有m个(或n个)元素的特殊线性表,其元素为一维数组。
n维数组的每个元素由相同类型的值及n个能确定元素位置的下标组成,按数组的n 个下标变化次序关系的描述,可以确定数组元素的前驱和后继关系并写出对应的线性表。
n维数组也可以由元素为(n-1)维数组的特殊线性表来定义,这样维数大于一的多维 数组是由线性表结构辗转合成得到的,是线性表的推广。
数组一旦被定义,它的维数和維界就不再改变。因此,除了结构初始化和销毁外,数组 通常只有两种基本运算:
(1)存取:给定一组下标,存取相应的数组元素。
(2)修改:给定一组下标,修改相应数据元素中的某一个或某几个数据项的值。