作者:解学武

数组是什么,数据结构中的数组

提到数组,大家首先会想到的是:很多编程语言中都提供有数组这种数据类型,比如 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 维数组:
  • 一维数组和其它线性存储结构很类似,用来存储只有一种“一对一”逻辑关系的数据:

    一维数组存储结构示意图
    图 2 一维数组存储结构示意图
     
  • 二维数组用来存储包含两种“一对一”逻辑关系的数据。二维数组可以看作是存储一维数组的一维数组,如图 3 所示;

    二维数组存储结构示意图
    图 3 二维数组存储结构示意图
     
  • n 维数组用来存储包含 n 种“一对一”逻辑关系的数据,可以看作是存储 n-1 维数组的一维数组;

数组存储结构还具有一些其它的特性,包括:
  1. 无论数组的维度是多少,数组中的数据类型都必须一致;
  2. 数组一旦建立,它的维度将不再改变;
  3. 数组存储结构不会对内部的元素做插入和删除操作,常见的操作有 4 种,分别是初始化数组、销毁数组、取数组中的元素和修改数组中的元素。

基于第 3 条特性,数组存储结构通常用顺序表来实现,而不用链表。有关顺序表实现数组结构,我会在下一节给大家详细讲解。
声明:当前文章为本站“玩转C语言和数据结构”官方原创,由国家机构和地方版权局所签发的权威证书所保护。

添加微信咨询 加站长微信免费领
C语言学习小册
加站长微信免费领C语言学习小册
微信ID:xiexuewu333