第一章 绪论
“数据结构”是介于数学、计算机硬件和计算机软件三者之间的一门核心课程
数据(data)是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素(data element)是数据的基本单位,在计算机程序中痛处作为一个整体进行考虑和处理。数据项是数据的不可分割的最小单位。
数据对象(data object) 是性质相同的数据元素的集合,是数据的一个子集。
数据结构(data structure) 是相互之间存在一种或多种特点关系的数据元素的集合。
基本结构: 集合——结构中的数据元素之间除了“同属于一个集合”的关系外,别无其他关系;
线性结构——结构中的数据元素之间存在一个对一个的关系;
树形结构——结构中的数据元素之间存在一个对多个的关系;
图状结构或网状结构——结构中的数据元素之间存在多个对多个的关系。
结构定义中的“关系”描述的是数据元素之间的逻辑关系,称为数据的逻辑结构;数据结构在计算机中的表示(映像)称为数据的物理结构,又称为存储结构。
一个含有抽象数据类型的软件模块通常应包含定义、表示和实现3个部分。抽象数据类型的定义由一个值域和定义在该值域上的一组操作组成。按其值得不同特性可细分为:
原子类型 atomic data type 属原子类型的变量的值是不可分解的。
固定聚合类型 fixed-aggregate data type 属该类型的变量,其值由确定数目的称为按某种结构组成;
可变聚合类型 variable-aggregate data type 构成可变聚合类型“值”的成分的数目不确定。
抽象数据类型三元组表示:(D, S, P)
ADT抽象数据类型名 {
数据对象:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:<基本操作的定义>
}
其中数据对象和数据关系的定义用伪码描述,基本操作的定义格式为
基本操作名(参数表)
初始条件:<初始条件描述>
操作结果:<操作结果描述>
算法algorithm 是对特定问题求解步骤的一种描述,它是指令的有限序列,其中一条指令表示一个或多个操作;
算法的重要特性:
有穷性
确定性
可行性
输入
输出
算法设计的要求:
正确性correctness 算法应当满足具体问题的要求;
可读性 readability 算法主要是为了人的阅读与交流,其次才是机器执行;
健壮性 robustness
效率与地存储量需求 效率指的是算法执行的时间。
算法效率的度量——时间复杂度
算法的存储空间存储空间需求——空间复杂度space complexity