1. 线性表
在讲顺序表之前,我们首先要介绍一个概念,线性表。
线性表(Linear List)是数据结构中最基础、最常用的一种结构,它的特点是数据元素之间按线性顺序排列,每个元素最多有一个前驱和一个后继。
线性表有两种实现方式,其一是顺序表,其二是链表。以下我们来为他们做一个简单区分:
| 顺序表(顺序存储) | 链表(链式存储) | |
| 实现方式 | 用数组存储元素,内存连续分配 | 用结点存储元素和指针,内存非连续分配 |
| 特点 |
|
|
| 适用场景 | 元素数量固定、频繁查询、少增删。 | 频繁增删、元素数量变化大。 |
2. 顺序表
2.1 概念与结构
概念:顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。
顺序表和数组的区别?
顺序表是数据结构中线性表的一种实现方式,本质是基于数组的封装,通过数组实现元素的连续存储,并添加了对数据操作的逻辑(如插入、删除、扩容等)。
2.2 分类
2.2.1 静态顺序表
定义与特点
- 固定容量:在创建时分配固定大小的内存空间,无法动态扩展或收缩。
- 内存分配:通常在编译阶段确定(如全局数组)或在栈上分配(如局部数组),内存管理由系统自动完成。
- 操作限制:仅支持基本的读写操作,插入和删除需手动移动元素,效率较低。
#define SLDataType int // 定义顺序表元素类型为 int(便于后期类型修改)
#define N 7 // 定义顺序表容量为 7(固定大小)
// 静态顺序表结构体定义
typedef struct Seqlist {
// 类型重命名为 SL
SLDataType arr[N]; // 固定大小的数组存储元素
int size;
} SL;


