一.总览
![](https://img2023.cnblogs.com/blog/2177087/202303/2177087-20230307193939792-423697404.png)
二.数据结构的基本概念
2.1.导图
![](https://img2023.cnblogs.com/blog/2177087/202303/2177087-20230307194313771-772603481.png)
2.2.什么是数据?
数据是信息的载体,是描述客观事物属性的数、字符及所有能够被输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原材料。
2.2.1.ENIAC是世界上第一台通用计算机。
2.3.数据元素
2.3.1.数据元素是数据的基本单位,数据项是构成数据元素的最小单元。
2.4.什么是数据对象?
数据对象是具有相同性质的数据元素的集合。是数据的一个子集
![](https://img2023.cnblogs.com/blog/2177087/202303/2177087-20230307201443281-1404079185.png)
同一个数据对象里面数据元素可以组成不同的数据结构。
不同的数据元素也可以组成相同的数据结构。
三.数据结构的三要素
3.1.导图
![](https://img2023.cnblogs.com/blog/2177087/202303/2177087-20230307202420325-967735931.png)
3.2.逻辑结构
1.集合:各个元素同属一个集合,别无其他关系。
2.线性:数据元素之间是一对一的关系。除了第一个元素,所有元素都有唯一的前驱;除了最后一个元素,所有元素都有唯一的后继。
3.树形:数据元素之间是一对多的关系。
4.图形:数据元素之间是多对多的关系。
3.3.物理结构(存储结构)
问题:如何用计算机表示数据元素之间的逻辑关系?
![](https://img2023.cnblogs.com/blog/2177087/202303/2177087-20230307204436145-1614633309.png)
3.3.1.总结
1.如果采用顺序存储,则物理上必须采用连续的空间。如果非顺序存储,则物理上可以是离散的。
2.数据的存储结构会影响存储空间分配空间的方便程度,也会影响对数据运算的速度。
3.4.数据的运算:结合逻辑结构、实际需求来定义基本运算。
1.运算的定义是针对逻辑结构的。
2.运算的实现是针对存储结构的。
3.5.数据类型、抽象数据类型
3.5.1.数据类型
数据类型是一个值的集合和定义在此集合上的一组操作的总称。
数据类型分为原子类型和结构类型。
3.5.2.抽象数据类型(ADT/Abstract Data Type):是抽象数据组织及与之相关的操作。
四.算法
4.1.什么是算法?
程序=数据结构+算法
算法是对特定问题求解步骤的一种描述。
4.2.算法的特性
1.有穷性 2.确定性 3.可行性 4.输入 5.输出
4.3.算法效率的度量
加法规则
T(n)=T1(n)+T2(n)=O(f(n))+O(g(n))=O(max(f(n),g(n)))
乘法规则
T(n)=T1(n)*T2(n)=O(f(n))*O(g(n))=O(f(n)*g(n))
O(1)<O(log2 n)<O(n)<O(nlog2 n)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)
4.3.1.时间复杂度
4.3.2.空间复杂度