第一章 绪论
1.1 数据结构在程序设计中的作用
A.问题(数据模型、基本思路) 想法(数据表示、数据处理、) 算法(程序语言、编程环境、设计方法) 程序
B.著名公式:数据结构+算法=程序
1.2 本书讨论的主要内容
A.问题一般分为:数值问题、非数值问题
a 数值问题抽象出的数据模型通常是数学方程
b 非数值问题抽象出的数据模型通常是线性表、树、图等数据结构
1.3数据结构的基本概念
1.3.1数据结构
A.数据是信息的载体,在计算机科学中是指所有能输入到计算机中并能被计算机程序识别和处理的符号集合
B.数据元素是数据的基本单位,在计算机程序中通常作为一个整体记性考虑和处理
C.数据结构是指相互之间存在一定关系的数据元素的组合
D.数据的逻辑结构是指数据元素之间逻辑关系的整体,是面向问题的,又称为数据结构
E.数据结构分四类:a 集合
b 线性结构
c 树结构
d 图结构
F.数据存储结构又称为物理结构,是数据及其逻辑结构在计算机中的表示。通常分为两种:顺序存储结构(用一组连续的存储单元依次存储数据元素,存储空间少)、链接存储结构(用一组任意的存储单元存储数据元素,数据之间的逻辑关系用指针来表示)
1.3.2 抽象数据类型
A.数据类型是一组值的集合以及定义于这个值集上的一组操作的总称
B.抽象是抽出问题本质的特征而忽略非本质的细节,是对具体事物的一个概括
C.抽象数据类型是一个数据结构以及定义在该结构上的一组操作的总称
1.4 算法及算法分析
1.4.1 算法及其描述方法
A.算法是解决问题的方法,它必须满足5个重要特性:输入(零个或多个)、输出(一个或多个)、有穷形、确定性、可行性
B.好算法还要具备以下特性:正确性、鲁棒性、简单性、抽象分级、高效性
C.算法的描述方法
a 自然语言:优点是容易理解,缺点是容易出现二义性,并且算法冗长
b 流程图
c 程序设计语言
d 伪代码
1.4.2 算法分析
A.度量算法效率的方法:事后统计、事前分析
B.算法的时间复杂度
C.最好、最坏和平均情况
D.算法的空间复杂度:S(n)=O(f(n)) (n为问题规模)