1.1 数据结构的研究内容
数据结构时一门研究非数值计算程序设计中操作对象,以及这些对象之间的关系和操作的学科。
1.2 基本概念和术语
1.2.1 数据、数据元素、数据项和数据对象
数据 (Data) 是客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素(Data Element)是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。在有些情况下,数据元素也称为元素、记录等。数据元素用千完整地描述一个对象。
数据项 (Data Item) 是组成数据元素的、有独立含义的、不可分割的最小单位。
数据对象 (Data Object) 是性质相同的数据元素的集合,是数据的一个子集。
1.2.2 数据结构
数据结构 (Data Structure) 是相互之间存在一种或多种特定关系的数据元素的集合。换句话说,数据结构是带 ”结构" 的数据元素的集合, “结构” 就是指数据元素之间存在的关系。
1)逻辑结构
(1)集合机构:属于同一集合关系
(2)线性结构:一对一关系
(3)树结构:一对多关系
(4)图结构或网状结构:多对多关系
2)存储结构(物理结构)
(1)顺序存储结构
(2)链式存储结构
1.2.3 数据类型和抽象数据类型
1)数据类型:是一个值的集合和定义在这个值集上的一组操作总称。
2)抽象数据类型:一般指由用户定义的,表示应用到问题的数学模型,以及定义在这个模型上的一组操作的总称。包括三部分:数据对象,数据对象上关系的集合,以及对数据对象的基本操作的集合。
1.3 抽象数据类型的表示与实现
抽象数据类型的概念与面向对象方法的思想一致。
1)预定义常量及类型:#define
2)数据结构的表示(存储结构)用类型定义(typedef)描述;数据元素类型约定为ElemType。由用户在使用该数据类型时自行定义。
3)基本操作的算法都用如下格式的函数来描述
函数类型 函数名 (函数参数表){
//算法描述
语句序列
}//函数名
- 内存的动态分配与释放
分配空间 指针变量=new 数据类型
释放空间 delete指针变量
- 复制语句
- 选择语句
- 循环语句
- 结束语句
- 输入输出语句
- 基本函数
1.4 算法和算法分析
1.4.1 算法的定义及特性
(1)有穷性
(2)确定性
(3)可行性
(4)输入
(5)输出
1.4.2 评价算法优劣的基本标准
(1)正确性
(2)可读性
(3)健壮性
(4)高效性:时间复杂度和空间复杂度时衡量算法的两个主要指标。
1.4.3 算法的时间复杂度
一条语句的重复执行次数称作语句的频度。
一个算法的时间复杂度时该算法的执行时间,为T(n)。
算法的时间复杂度不仅和问题的规模大小有关,还与问题数据的初始状态有关。这样就有了算法在最好,最坏以及在平均状态下的时间复杂度的概念。
常见的时间复杂度按数量级递增排列依次为:
1<log₂n<n<nlog₂n<nᶻ<nᶾ<nᵏ<2ⁿ
1.4.4 算法的空间复杂度
算法所需存储空间的量度为空间复杂度,记作S(n)=O(f(n))。