文章目录
数据结构(绪论)
数据结构的定义
是相互之间存在一种或多种特定关系的数据元素的集合。
数据结构中的几个概念
- 数据:所有能够输入到计算机中,且能够被计算机处理的符号的集合。
数据不仅包括整型(
int
)、实型(float
)等数值数据,还包括音频(MP3
)、图片(GIF
)、视频(MP4
)等非数值数据。
数据结构中主要讨论结构化数据。
- 数据元素:是数据(集合)中的一个“个体”,它是数据的基本单位。
- 数据项:是用来描述数据元素的,它是数据的最小单位。
- 数据对象:具有相同性质的若干个数据元素的集合,如整数数据对象(
int
)是所有整数的集合。
默认情况下,数据结构中讨论的数据都是数据对象。
数据结构中讨论的元素关系主要是指相邻关系或邻接关系。
数据的逻辑结构
数据元素之间内在关系就是数据的逻辑结构,它从逻辑关系上描述数据。它是面向用户的
数据四种基本的逻辑结构:
- 线性结构
- 元素之间的关系:一对一
- 特点:开始元素和终端元素都是唯一的。除此之外,其余元素都有且仅有一个前驱元素和一个后继元素。
- 例如:学生信息表
- 树形结构
- 元素之间关系:一对多
- 特点:开始元素唯一,终端元素不唯一。除终端元素以外,每个元素有一个或多个后继元素;除开始元素外,每个元素有且仅有一个前驱元素。
- 例如:一所学校有多个学院
- 图结构
- 元素之间的关系:多对多
- 特点:所有元素都可能有多个前驱元素和多个后继元素。
- 例如:微信朋友圈中,“我”的朋友们彼此之间可能相识关系,也可能是不相识关系。
- 集合结构
- 元素之间关系:无
- 数据元素之间除了“属于同一个集合”的联系之外没有其他关系。是最松散的,不受任何制约的关系。
数据逻辑结构的多种表现形式
-
表格
-
二元组
-
图形
数据的存储结构
数据在计算机存储器中的存储方式就是存储结构。它是面向程序员的。
设计存储结构的这种映射应满足两个要求:
- 存储所有元素
- 存储数据元素间的关系
####数据四种基本的存储结构:
-
顺序存储结构:
这种存储结构的特点:
- 所有元素占用一整块内存空间
- 逻辑上相邻的元素,物理上也相邻。
-
链式存储结构:
这种存储结构的特点:
- 一个逻辑元素用一个节点存储,每个节点单独分配,所有节点的地址不一定是连续的。用指针表示逻辑关系。
-
索引存储结构
- 插眼
-
哈希(散列)存储结构
- 插眼
数据运算
数据运算是对数据的操作
如果说数据的逻辑结构描述了数据的静态特性,那么在数据的逻辑结构上定义的一组运算给出了数据被使用的方式,即数据的动态特性。
数据结构最常见的运算有:
- 搜索运算 ———— 在数据结构中搜索满足一定条件的元素。
- 插入运算 ———— 在数据结构中插入新元素。
- 删除运算 ———— 在数据结构中删除指定运算。
- 更新运算 ———— 将数据结构指定元素替换为新的元素
结论:
- 同一个逻辑结构可以对应多种存储结构。
- 同样的运算,在不同的存储结构中,其实现过程是不同的。
抽象数据类型
数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。
在高级程序语言中提供了多种数据类型。不同数据类型的变量,其所能取的值的范围不同,所能进行的操作不同。
例如:C/C++中的int
就是整型数据类型,其操作主要有: + 、 − 、 ∗ 、 / 、 . . . +、-、*、/、... +、−、∗、/、...
数据类型与数据结构的关系:数据类型就是已经实现了的数据结构。
抽象数据类型(ADT)指的是从求解问题的数学模型中抽象出来的数据逻辑结构和运算(抽象运算),而不考虑计算机的具体实现。
其主要的两个特征是数据封装和信息隐藏。
- 数据封装:把数据和操作数据的运算组合在一起的机制。
- 信息隐藏:指数据的使用者只需知道这些运算的定义(也称为规范)便可访问数据,而无须了解数据的存储以及运算算法的实现细节。
事实上,抽象数据类型体现了程序设计问题分解、抽象和信息隐藏的特性。抽象数据类型把实际生活中的问题分解为多个规模小且容易处理的问题,然后建立了一个计算机能处理的数据模型,并把每个功能模块的实现细节作为一个独立的单元,从而使具体实现过程隐藏起来。
抽象数据类型的定义格式:
ADT 抽象数据类型的定义格式如下:
{
数据(Data):
数据元素及其之间关系的定义
运算(Operation):
运算1(参数表): 运算功能描述
....
运算n(参数表): 运算功能描述
}