数据结构期末复习
1. 基本术语
数据结构分为逻辑结构与存储结构
- 逻辑结构:关注元素之间的逻辑关系,决定数据如何组织和关联
- 存储结构:决定数据之间在计算机内存中的物理存放方式
逻辑结构分类
- 集合:元素同属一个集合,无其他关系
- 线性结构:一个对一个,比如线性表,栈,队列。
- 树形结构:一个对多个。
- 图形结构:多个对多个
存储结构分类
- 顺序存储结构:数据元素在物理位置上是连续的
- 链式存储结构:数据元素在物理位置上不一定连续,但是数据元素除了要存信息,还要存储一个或多个指向其他元素的指针(也就是存下一个或多个元素的物理位置)。
2. 算法
算法的五个基本特征
- 输入
- 输出
- 确定性
- 有穷性
- 可行性
时间复杂度
- 语块被执行的次数
- 一次计算,无论n的大小如何,计算和返回结构所需时间都是O(1)
空间复杂度
- 占用多少空间的指标
3. 线性表
定义:
- 数据元素存在一对一线性关系,即每个元素(除了第一个和最后一个)都有一个前驱和一个后继
特点:
- 有序性:线性表中的元素是有序的,每个元素都有一个位置,我们可以通过位置来访问元素。
- 元素唯一性:每个元素在线性表中的位置是唯一的。
- 动态性:线性表的大小是动态变化的
常见操作:
- 插入
- 删除
- 访问
- 搜索
- 排序
线性表顺序表示和实现
顺序表:把线性表顺序存储起来是顺序表。
顺序存储定义:
- 把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构
例:
- 顺序表中第一个元素存储地址是102,每个元素的长度是2,那么第四个元素的地址是108
顺序表优点:
- 时间:可以随机存取表中任一元素
- 空间:存储密度大
顺序表的缺点
- 时间:在插入 删除某一元素时,需要移动大量元素
- 空间:浪费存储空间,属于静态存储形式,元素个数不能自由扩充
为了克服顺序表的缺点 我们需要用链表
链表
- 线性表的链式表示
- 在逻辑上相邻的元素在物理上不一定相邻
节点:
- 在链式存储结构中,火车的每一届车厢就像链式存储结构中的一个节点
- 节点是构成线性表的基本单元,每个节点包括两部分:
- 数据:车厢里装的货物,对应节点中存储的数据。
- 指针:车厢之间的钩子,对应节点中用来指向下一节点的指针。
- 头节点:火车的第一节车厢,对应链表存储的头节点
- 头节点通常包含一个指向第一个实际数据节点的指针。
- 尾节点:火车的最后一节车厢,对应链表存储的尾节点
- 没有指针,只包括数据
循环链表:
- 尾节点的指针指向头节点,叫做循环链表
4. 栈
定义:只能在表的一端(栈顶)进行插入和删除运算的线性表
- 入栈出栈都通过栈顶
特点:先进后出,后进先出
顺序栈
1 | //定义顺序栈的结构体 |
- 链栈
- 运算首先的单链表,只能在链表头部进行操作,栈顶指针就是链表的头指针。
5. 队列
队列是一种先进先出的线性表,在表一段插入,在另一端删除
6. 串
定义:由零个或多个字符组成的有限序列
串的匹配:KMP算法
- 利用已经匹配成功的部分信息
树
结构特点:一对多
子树:树中任意一个节点及其所有后代节点
二叉树
- 性质:二叉树的第i层上至多有2的i-1次方个结点
- 深度为k的二叉树至多有2的k-1次方个结点
满二叉树
- 每层都两个节点的二叉树
完全二叉树
- 只有最后一层叶子不满,且全部集中到左边
- 具有n个节点的完全二叉树深度必为log下标二 n + 1
- 标题: 数据结构期末复习
- 作者: yin_bo_
- 创建于 : 2026-01-04 16:41:46
- 更新于 : 2026-01-11 15:44:00
- 链接: https://www.blog.yinbo.xyz/2026/01/04/期末复习/数据结构与算法/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。