从逻辑结构上看,多维数组可以认为是一维数组的扩展,从物理结构上看,一维数组是多维数组的特例。
我本人是这样构想的,比如看待二维数组:一维数组中的每个元素都是一维数组。
多维数组的逻辑特征是:一个元素可能有多个直接前驱和多个直接后继。
数组顺序表的定义
把数组中的元素按照逻辑次序存放在一组地址连续的存储单元的方式称为数组的顺序存储结构,采用这种存储结构的数组称为数组顺序表。
由于内存单元是一维结构,而数组是多个结构,因此用一组连续存储单元存放数组的元素存在一个次序问题。有两种顺序存储方式:列优先顺序表和行优先顺序表。
列优先顺序表:以列为主序的数组顺序表,是将数组元素按照列向量排序,第i+1个列向量紧接在第i个列向量的后面,即按列优先,逐列顺序存储。
行优先顺序表:以行为主序的数组顺序表,是将数组元素按照行向量排序, 第i+1个行向量紧接在第i个行向量的后面,即按行优先,逐行顺序存储。
顺序表也存在一定的局限性:
1. 改变顺序表的大小需要重新创建一个新的顺序表并把原有的数据都复制过去。
2. 顺序表通过物理位置上的相邻关系来表示线性结构的逻辑关系,插入、删除元素平均需要移动一半的元素。特别是排序而言。
使用链表可以解决上述提到的两个局限问题。