提到数组,大家首先会想到的是:很多编程语言中都提供有数组这种数据类型,比如 C/C++、Java、Go、C# 等。但本节我要讲解的不是作为数据类型的数组,而是数据结构中提供的一种叫数组的存储结构。
在前面章节中,大家已经学会了很多种线性存储结构,包括顺序表、链表、栈、队列和串。数组也是一种线性存储结构,用来存储逻辑关系为 "一对一" 的数据。
和前面学过的那些线性存储结构相比,数组最大的不同是:它存储的数据可以包含多种“一对一”的逻辑关系。举个简单的例子:
图 1 包含多种线性关系的数据
上图中,{a1, a2, a3, a4}、{b1, b2, b3, b4}、{c1, c2, c3, c4}、{d1, d2, d3, d4} 中各自包含的元素具有“一对一”的逻辑关系,同时 a、b、c、d 这 4 个序列也具有“一对一”的逻辑关系。
类似图 1 这样,存储不止一种“一对一”逻辑关系的数据,数据结构就推荐使用数组存储结构。
数据结构中的数组
对于数组存储结构,我们可以这样理解它:数组是对线性表的扩展,是一种“特殊”的线性存储结构,用来存储具有多种“一对一”逻辑关系的数据。
实际场景中,存储具有 N 种“一对一”逻辑关系的数据,通常会建立 N 维数组:
- 一维数组和其它线性存储结构很类似,用来存储