1.顺序表的概念
顺序表 是 用一段物理地址连续的存储单元 依次 存储数据元素的线性结构
一般情况下采用数组存储
2.顺序表的结构
既然顺序表 可以用来存储数据元素,
那就少不了 增删查改 的操作
此时,单一地只创建数组满足不了上述操作
创建相应的结构体变量可以很好地解决这个问题
2.1重命名数据类型名称
typedef int SLDataType;
重命名一下数据类型的名称
这样
之后改变数据类型的时候只需要修改一处
SL是Seqlist,即顺序表的英文缩写DataType 是数据类型的英文缩写
2.2静态顺序表
所谓静态:使用定长数组存储数据
#define N 5
typedef struct SeqList
{
SLDataType arr[N]; //定长数组
int size; //有效数据个数
}SL;

如上图:
定义的结构体包含
一个定长数组和一个变量
数组用来存储数据,
变量用来存储有效数据的个数
很显然,静态顺序表存在很大的缺陷,
因为
你不能根据需要合理定义数组的大小
开100个单元存不下101个数据
开1万个单元存不下1万零1个数据
开10万个单元如果只存10个数据,又会浪费空间
所以我们更多的选择使用动态顺序表按需申请空间
2.3动态顺序表
typedef struct SeqList
{
//该指针指向所申请的空间首地址
SLDataType* arr;
int size; //有效数据个数
int capacity; //空间容量
}SL;

如上图:
定义的结构体中,
arr 指向动态开辟的内存空间
size 存储有效数据个数
capacity表示空间容量,空间不够就扩容