一、数组的概念
从本质上讲,数组与顺序表、链表、栈和队列一样,都用来存储具有 “一对一” 逻辑关系数据的线性存储结构。只因各编程语言都默认将数组作为基本数据类型,使初学者对数组有了 “只是基本数据类型,不是存储结构” 的误解。
不仅如此,数组和其他线性存储结构不同,顺序表、链表、栈和队列存储的都是不可再分的数据元素(如数字 5、字符 ‘a’ 等),而数组既可以用来存储不可再分的数据元素,也可以用来存储像顺序表、链表这样的数据结构。
比如说,数组可以直接存储多个顺序表。我们知道,顺序表的底层实现还是数组,因此等价于数组中继续存储数组。这与平时使用的二维数组类似。
根据数组中存储数据之间逻辑结构的不同,数组可细分为一维数组、二维数组、…、n 维数组:
1、数组的定义
2、数组的顺序存储
数组一旦被定义,它的维度和维界就不在改变,除了销毁和初始化之外。
数组只有存取元素和修改元素值的操作,因此采用顺序存储结构来存储数组。
数组存储的核心问题是:数组元素多维结构到一维内存空间的映射
2.1、二维数组的两种存储方式
由于数组可以是多维的,而顺序存储结构是一维的,因此数组中数据的存储要制定一个先后次序。通常,数组中数据的存储有两种先后存储方式:
2.1.1、以列序为主(先列后行):按照行号从小到大的顺序,依次存储每一列的元素
2.1.2、以行序为主(先行后列):按照列号从小到大的顺序,依次存储每一行的元素。
2.2、多维数组查找指定元素
当需要在顺序存储的多维数组中查找某个指定元素时,需知道以下信息:
多维数组的存储方式;
多维数组在内存中存放的起始地址;
该指定元素在原多维数组的坐标(比如说,二维数组中是通过行标和列标来表明数据元素的具体位置的);
数组中数组的具体类型,即数组中单个数据元素所占内存的大小,通常用字母 L 表示;
2. 2.1、二维数组查找指定元素
2.2.2、N维数组查找指定元素