一、顺序表介绍
1. 线性表
线性表:逻辑结构的统称
线性表是 n 个具有相同特性的数据元素的有限序列,是一种抽象的逻辑结构,仅描述数据元素之间的'线性'关系(即除首尾元素外,每个元素有唯一前驱和后继)。其核心特征包括:
- 逻辑连续性:元素按顺序排列,形成一条直线。
- 有限性:元素个数确定,非无限集合。
- 通用性:可表示多种实际问题,如学生名单、购物清单、队列等。
常见类型:
- 顺序表:用连续内存存储(如数组)。
- 链表:用非连续节点存储(通过指针/引用链接)。
- 栈/队列:特殊线性表(操作受限)。
- 字符串:元素为字符的线性表。
线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。
逻辑结构:线性表的本质定义。线性表的逻辑结构必须是线性的(元素间'一对一'相邻关系),这是其核心特征。 物理结构:逻辑结构的存储实现。物理结构(存储方式)可以是线性的,也可以是非线性的,但需保证能体现逻辑上的线性关系。
- 线性物理结构:如数组(顺序存储),元素在内存中连续存放,物理位置直接反映逻辑顺序。
- 非线性物理结构:如链表(链式存储),元素在内存中分散存放,通过指针/引用关联,逻辑顺序通过指针体现(物理上不连续,但逻辑上线性)。
我们可以理解为:线性表 = 逻辑结构(线性)+ 物理结构(可选线性/非线性存储)
2. 顺序表概念与结构
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。
根据上述概念,我们可以得知:顺序表的逻辑结构和物理结构均为线性的。
顺序表的底层结构是数组,对数组的封装,实现了常见的增删改查等接口。
如图:

既然上文说过:顺序表的底层结构是数组,对数组的封装。
那么二者有何区别:
首先,数组是一种物理存储结构,指用一段连续的内存空间存储相同数据类型元素的集合。其核心作用是存储数据,不自带数据管理功能。顺序表是一种逻辑结构(线性表)的实现方式,底层基于数组,但通过结构体封装,提供了对数据的管理功能(如动态扩容、增删查改接口)。
简单来说:我们可以认为:数组是基础,顺序表是'升级版'。更加方便且好用。
- 数组 ≈ '空饭盒':仅提供存放食物的空间,需手动装取。
- 顺序表 ≈ '智能饭盒':自带分区、加热、容量提示功能,方便管理食物。
二、顺序表分类
1. 静态顺序表
所谓静态顺序表,实质为使用定长数组来存储元素,它的空间在一开始时就是确定好了的。空间给少了不够用,给多了造成空间浪费。上面提到过顺序表通过结构体封装实现,静态顺序表如下(例):










