数据结构:顺序表
线性表
线性表(linear list)是 n 个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表包括:顺序表、链表、栈、队列、字符串等。
线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。
顺序表
概念与结构
概念: 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。
- 逻辑结构: 线性
- 物理结构: 线性
顺序表和数组区别
顺序表的底层结构是数组,是对数组的封装,实现了常用的增删改查等接口。
数组 ⊆ 线性表
分类
静态顺序表
概念: 使用定长数组存储元素。
![静态顺序表示意图]
静态顺序表缺陷: 空间给少了不够用,给多了造成空间浪费。但在竞赛中经常用静态申请数组的方式,接下来也会说到。
动态顺序表
动态顺序表按需申请,不会造成浪费。
![动态顺序表示意图]
动态顺序表模拟实现
定义动态顺序表结构
头文件中:
// 定义动态顺序表的结构
typedef int SLTDataType;
typedef struct SeqList {
SLTDataType* arr; // 存储数据
int size; // 有效数据个数
int capacity; // 空间大小
} SL;
顺序表初始化
void SLInit(SL* ps) {
ps->arr = NULL;
ps->size = ps->capacity = 0;
}
顺序表销毁
void SLDestroy(SL* ps) {
(ps->arr)
(ps->arr);
ps->arr = ;
ps->size = ps->capacity = ;
}


