本章重点复习线性表这一基础数据结构,包括其逻辑结构特征,以及在计算机中两种截然不同的物理实现:顺序表与链表重点在于掌握不同存储结构下各种基本操作的时间复杂度差异及适用场景Documentation Index
Fetch the complete documentation index at: https://0907.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
线性表的定义
基本概念与特征
基本概念与特征
- 表中元素的个数有限
- 表中元素具有逻辑上的顺序性,均为数据元素,数据类型都相同,具有抽象性
背景说明:在稍微复杂的线性表中,一个数据元素可以由若干个数据项组成,常把数据元素称为记录,含有大量记录的线性表又称为文件
线性表的表示
顺序表
定义与结构图示
定义与结构图示
优缺点对比
优缺点对比
主要优点
- 可进行随机访问,按索引查找速度快
- 存储密度高,不需要额外指针空间
主要缺点
- 插入和删除操作效率较低,需要移动大量元素
- 要求分配连续的存储空间,可能产生空间浪费或溢出
基本操作与时间复杂度
基本操作与时间复杂度
- 初始化:静态分配或动态分配
- 插入操作:
- 最好情况:在尾部插入,
- 最坏情况:在表头插入,
- 平均情况:
- 删除操作:
- 最好情况:删除表尾元素,
- 最坏情况:删除表头元素,
- 平均情况:
- 查找操作:
- 按值查找:
- 按索引查找:
常见算法题型(参考王道)
常见算法题型(参考王道)
- 双指针:如王道 P20 05
- 倒置:如王道 P20 07、10
- Boyer–Moore 投票算法:如王道 P20 12
- 空间换时间:如王道 P21 13
链表
定义
定义
数据元素的存储映像称为结点,其中存储数据元素信息的域称为数据域,存储直接后继存储位置的域称为指针域
各类链表及操作复杂度
各类链表及操作复杂度
- 单链表
- 循环链表
- 双向链表
- 静态链表
- 求表长操作:
- 按序号查找节点:
- 按值查找表节点:
- 插入节点操作(含查找):
- 删除节点操作(含查找):
- 头插法建立单链表:
- 尾插法建立单链表:
常见算法题型(参考王道)
常见算法题型(参考王道)
- 快慢指针:用于找中点、判环等如王道 P44 15、16、17、20
- 公共节点:求两个链表的交点如王道 P43 05、P45 18
- 空间换时间:如王道 P45 19