数据结构:顺序表
线性表概述
线性表(linear list) 是 n 个具有相同特性的数据元素的有限序列。作为一种在实际中广泛使用的数据结构,常见的线性表包括顺序表、链表、栈、队列和字符串等。
线性表在逻辑上是线性结构,即连续的直线。但在物理存储上并不一定连续,通常以数组或链式结构形式存储。
顺序表详解
概念与结构
概念: 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。
- 逻辑结构: 线性
- 物理结构: 线性
顺序表与数组的区别
顺序表的底层结构是数组,是对数组的封装,实现了常用的增删改查等接口。
数组 ⊆ 线性表
分类
静态顺序表
概念: 使用定长数组存储元素。

缺陷: 空间给少了不够用,给多了造成空间浪费。不过在竞赛中经常使用静态申请数组的方式。
动态顺序表
动态顺序表按需申请,不会造成空间浪费。

动态顺序表模拟实现
下面我们以 C 语言为例,模拟实现一个动态顺序表。这部分代码展示了内存管理的核心逻辑,理解它对掌握底层数据结构至关重要。
定义动态顺序表结构
头文件中定义类型和结构体:
// 定义数据类型
typedef int SLTDataType;
// 定义顺序表结构
typedef struct SeqList {
SLTDataType* arr; // 存储数据的指针
int size; // 有效数据个数
int capacity; // 当前容量大小
} SL;
初始化与销毁
初始化时分配资源,销毁时释放资源,避免内存泄漏。
{
ps->arr = ;
ps->size = ;
ps->capacity = ;
}
{
(ps->arr) {
(ps->arr);
ps->arr = ;
}
ps->size = ;
ps->capacity = ;
}


