## 基础概念 ### 数据 **信息的载体**,是客观事物属性的数、字符以及所有能够输入到计算机包中并且被计算机程序识别和处理的**集合** ### 数据元素 **数据的基本单位**,通常按照一个整数来进行考虑和处理。 特别注意:一个数据元素由若干个**数据项**组成,数据项是构成数组元素的最小单位,且不可分割。 ### 数据对象 具有**相同性质**的数据元素的**集合**,**是数据的子集** ### 数据类型 值的集合和定义在此集合上一组操作的总称 - 原子类型:不可再分的数据类型; - 结构类型:可以分解成若干分量(成分)的数据类型; - **抽象数据类型**:抽象出具组织和其相关的操作; ### 抽象数据类型(ADT) > Tips: 可以结合高级语言中类对象封装来理解; ```bash ADT抽象数据类型名{ 数据对象:<数据对象的定义> 数据关系:<数据关系的定义> 基本操作:<基本操作的定义> } ADT抽象数据类型名 ``` 一个数学模型以及定义在该模型上的一组操作。定义仅仅取决于它的一组逻辑操作。与计算机内部如何表示和实现是没有关系; **不论内部结构如何变化,只要其数学特性不变,就不会影响到外部的使用,实现了数据封装和信息隐藏** 通常由(数据对象、数据关系、数据操作集)三元组来表示抽象数据类型; 抽象数据类型的主要作用是**数据封装和信息隐藏,让实现与使用相分离**。数据及其相关操作的结合称为数据封装。对象可以对其他对象隐藏某些操作细节,从而使这些操作不会受到其他对象的影响。 抽象数据类型独立于运算的具体实现,使用户程序只能通过抽象数据类型定义的某些操作来访问其中的数据,实现了信息隐藏。 ### 数据结构 首先明确:数据元素都不是孤立存在的。元素与元素之间存在着某种关系,这种相互之间的关系就是**结构**。 **数据结构是相互之间存在一种或者多种特定关系的数据元素的集合** - 逻辑结构 - 存储结构(物理结构) - 数据运算 数据的逻辑结构和存储结构是密不可分的。 **算法的设计取决于所选定的逻辑结构;算法的实现依赖于所采用的存储结构;**