[NEFU 数据结构] 第 1 章 绪论 知识点整理
阅读须知
- 需求指向:
此博客用于应付NEFU数据结构考试,基于题目进行整理,不适合想深入学习数据结构与算法艺术的同学。 - 前置知识:
C语言 - 参考资料:
数据结构C语言版|第二版 严蔚敏
数据结构C语言版习题解析与实验指导|第二版 严蔚敏 - 推荐博客
[NEFU]数据结构 知识点整理和代码实现
一、思维导图
二、考点
1.2 基本概念和术语
- 数据:客观事物的符号表示
- 数据元素:数据的基本单位,通常作为整体考虑和处理
- 数据项:组成数据元素,有独立含义的,不可分割的最小单位
- 数据对象:数据元素的集合
- 数据结构:
带结构的数据元素的集合,是数据元素的组织形式
包括逻辑结构和存储结构两个层次 - 逻辑结构:
与数据存储无关,独立于计算机
两个要素:数据元素,关系
常见逻辑结构: - 存储结构(物理结构):分为 顺序存储结构,链式存储结构
- 顺序存储结构:
连续存储区域
数据之间逻辑关系由存储位置表示 - 链式存储结构:
无需连续存储区域
需要附增指针字段
空间使用更灵活
物理地址和逻辑地址不同
数据之间逻辑关系用指针表示 - 数据类型:一个值的集合和定义在这个值上操作的总称
- 抽象数据类型:数据对象、数据对象上关系集合、数据对象基本操作集合
1.3 抽象数据类型的表示和实现
- 抽象数据类型独立利于具体实现,将数据和操作封装到一起
- 在 C++ 中,类的声明表示抽象数据类型,类的实现来实现抽象数据类型
- 抽象数据类型相当于在概念层上描述问题,类相当于在实现层上描述问题
1.4 算法和算法分析
- 算法的定义
为了解决某类问题的有限长的序列
有穷性:有穷步后结束,每步有穷时间内完成
确定性:不产生二义性
可行性:所有操作都可以通过已实现的基本运算执行有限次来实现
输入:零个或多个输入
输出:一个或多个输出 - 评价标准
正确性:合理数据输入下,有限的运行时间内得到正确的结果
可读性:便于人们理解和交流
健壮性:对非法数据有合理反应和处理
高效性:时间复杂度和空间复杂度(两个都要) - 算法时间复杂度
问题规模:算法求解问题的输入量
语句频度:一条语句重复执行的次数
大O计数法:忽略所有低次幂和最高次幂的系数
常数阶:算法中语句频度是个常数,即使再大,算法复杂度都是O(1)
最好时间复杂度,最坏时间复杂度,平均时间复杂度
时间复杂度取决于:问题的规模,处理数据的初态- 算法空间复杂度
若算法执行时所需的辅助空间相对于输入数据量是个常数,则称这个算法原地工作,辅助空间为O(1) - 时间复杂度和空间复杂度没有直接联系