1. 线性表
在深入顺序表之前,先回顾一下线性表的概念。
线性表(Linear List)是数据结构中最基础、最常用的一种结构,其特点是数据元素之间按线性顺序排列,每个元素最多有一个前驱和一个后继。
线性表主要有两种实现方式:顺序表和链表。为了更直观地理解,我们可以对比它们的特性:
| 顺序表(顺序存储) | 链表(链式存储) | |
| 实现方式 | 用数组存储元素,内存连续分配 | 用结点存储元素和指针,内存非连续分配 |
| 特点 |
|
|
| 适用场景 | 元素数量固定、频繁查询、少增删。 | 频繁增删、元素数量变化大。 |
表格中的细节稍后会在具体实现中体会。今天我们将重点放在顺序表的实现上,特别是动态顺序表。
2. 顺序表
2.1 概念与结构
概念:顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。

顺序表和数组的区别?
顺序表是数据结构中线性表的一种实现方式,本质是基于数组的封装。它不仅利用数组实现元素的连续存储,还额外添加了对数据操作的逻辑(如插入、删除、扩容等),使其成为一个完整的数据结构抽象。
2.2 分类
2.2.1 静态顺序表
定义与特点
- 固定容量:在创建时分配固定大小的内存空间,无法动态扩展或收缩。
- 内存分配:通常在编译阶段确定(如全局数组)或在栈上分配(如局部数组),内存管理由系统自动完成。
- 操作限制:仅支持基本的读写操作,插入和删除需手动移动元素,效率较低。
#define SLDataType int // 定义顺序表元素类型为 int(便于后期类型修改)
#define N 7 // 定义顺序表容量为 7(固定大小)
// 静态顺序表结构体定义
typedef struct {
SLDataType arr[N];
size;
} SL;




