王道
绪论
考纲
易混淆的概念
数据结构,逻辑结构,存储结构
数据结构三要素:数据的逻辑结构,数据的存储结构和数据的运算
- 即数据结构种定义了逻辑结构,存储结构
逻辑结构与存储结构之间的关系:存储结构不能独立于逻辑结构,存储结构是逻辑结构再计算机上的映射
名词 | 例子 |
---|---|
数据结构 | 顺序表,哈希表,单链表 |
逻辑结构 | 有序表 |
物理结构 |
数据结构的基本概念
基本概念和术语
数据
数据是信息的载体,是描述客观事物属性的数、字符及$\color{yellow}{\text{所有能输入到计算机中}}$并被计算机程序识别和处理的$\color{green}{\text{符号}}$的$\color{green}{\text{集合}}$。数据是计算机程序加工的原料。
是对客观事物的符号表示。
数据元素
数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。$\color{yellow}{\text{一个数据元素可由若干数据项组成}}$,$\color{green}{\text{数据项}}$是构成数据元素的不可分割的$\color{red}{\text{最小单位}}$。例如,学生记录就是一个数据元素,它由学号、姓名、性别等数据项组成。
数据对象
数据对象是具有相同性质的数据元素的集合,是$\color{green}{\text{数据}}$的一个$\color{green}{\text{子集}}$。例如,整数数据对象是集合$N= \lbrace \pm 0,\pm 1,\pm 2, \cdots \rbrace$。
- 可以理解为数据的一个$\color{green}{\text{实例化对象}}$
数据类型
数据类型是一个$\color{green}{\text{值的集合}}$和定义在此集合上的$\color{green}{\text{一组操作}}$的总称。
1)原子类型。其值不可再分的数据类型。
2)结构类型。其值可以再分解为若干成分(分量)的数据类型。
3)抽象数据类型。抽象数据组织及与之相关的操作。 一个数学模型以及定义在该模型上的一组操作。
数据结构
数据结构是相互之间存在一种或多种特定关系的$\color{red}{\text{数据元素}}$的$\color{red}{\text{集合}}$。在任何问题中,数据元素都不是孤立存在的,它们之间存在某种关系,这种数据元素相互之间的关系称为结构(Structure)。数据结构包括三方面的内容:逻辑结构、存储结构和数据的运算。
数据的逻辑结构和存储结构是密不可分的两个方面,一个算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采用的存储结构。
数据结构的形式定义
数据结构三要素
数据的逻辑结构
- 线性结构
- 一般线性表
- 受限线性表
- 栈和队列
- 串
- 线性表推广
- 数组
- 广义表
- 非线性结构
- 集合
- 树形结构
- 一般树
- 二叉树
- 图状结构
- 有向图
- 无向图
数据的存储结构
顺序结构
链式结构
索引结构
散列存储
数据的运算
- 运算的定义是针对逻辑结构的
- 运算的实现是针对存储结构的
算法和算法评价
算法的基本概念
算法(Algorithm)是对特定问题求解步骤的一种描述,它是指令的$\color{green}{有限}$序列,其中的每条指令表示一个或多个操作。此外,一个算法还具有下列5个重要特性:
- 1)有穷性。
- 2)确定性。
- 3)可行性。
- 4)输入。
- 5)输出。
算法效率的度量
关于时间复杂度的补充,去阅读了算法导论,发现书中的定义更为严谨,比较适合我这种转牛角尖的憨憨,总结:
基本上强调时间复杂度,没有代码就不要提,题目中会预设某些代码逻辑,你可能需要去猜题目的算法是啥:比如为什么关键路径和拓扑排序的时间复杂度是O(n + e),书中没有细讲,就直接出现了题目