1.线性表
线性表是n个具有相同特性(逻辑结构和物理结构) 的数据元素的有限序列
tip:
逻辑结构:一定是连续的
物理结构:不一定是连续的
常见的线性表有:顺序表、链表、栈、队列、字符串...
2.顺序表
顺序表是用一段物理地址 连续的存储单位依次存储数据元素的线性结构,一般情况下采用数组存储。顺序表的底层结构是数组,顺序表是用数组来实现的
2.1顺序表的分类
顺序表分为:静态顺序表(使用定长数组存储元素)和动态顺序表(底层的数组空间在不断变化)
2.1.1静态顺序表
明确知道要存储多少数据的情况下,静态顺序表更简单,因为静态顺序表结构体里只有两个成员(数组和整形变量size)

这里对 int 取别名,是为了方便后续一键修改
静态顺序表缺陷:空间给少了不够用,给多了造成空间浪费
2.1.2动态顺序表
动态顺序表底层的数组空间在不断变化
动态顺序表比静态顺序表还要再增加4个字节,因此结构大小更大,绝大多数情况下动态顺序表更适用。

2.1.3传值与传地址的对比
传值:拷贝变量本身的值,改副本,原值不变
. 运算符
适用结构体普通变量
语法:结构体变量.成员名
传指针:拷贝地址值 (本质依然是传值!只是拷贝内容是地址);拿到地址后解引用 * 可以修改原变量
-> 运算符
适用结构体指针
语法:结构体指针->成员名
等价于:(*结构体指针).成员名
2.1.4补充:
malloc:申请固定大小空间
calloc:malloc+初始化
realloc:增加空间
2.2顺序表常见操作的代码实现
顺序表学习.h
.h 头文件(类比目录)
定义结构
声明函数


顺序表学习.c
.c实现文件
#include "xx.h"







test.c
test.c 测试文件


2.3 顺序表算法题
2.3.1 移除元素
https://leetcode.cn/problems/remove-element/description/
2.3.2 删除有序数组中的重复项
https://leetcode.cn/problems/remove-duplicates-from-sorted-array/description/
2.4.3 合并两个有序数组
https://leetcode.cn/problems/merge-sorted-array/description/