数据结构是一门专业技术基础课程,课程分析、研究计算机加工数据的特征,数据的逻辑结构,数据的存储结构,数据涉及的算法,以及不同特征数据应用情况。
结构化程序 =(算法)+(数据结构)
面向对象的程序 =(算法 + 数据结构)
课程的主要内容
- 线性的数据结构
- 树
- 图
- 查找
- 排序
第一章 绪论
本章重点:
- ”数据结构“的基本概念
- 算法和算法设计的要求
1.1 什么是数据结构
- 计算机解决问题的一般步骤:
建立数学模型:从具体问题中抽象出来。
数学模型:
- 数值问题(数学方程)
- 非数值问题(集合,线性表,树,图等)
- 更多的非数值问题无法用数学方程描述
典型例题
- 例1:图书馆数目检索系统自动化问题
线性的数据结构
- 例2:人机对弈问题
”树“型数据结构
- 例3:多叉路口交通灯的管理问题
”图“型数据结构
总结:
数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等得学科。
1.2 基本概念和术语
数据(Data):
- 客观事务的符号表示;
- 所有能够输入到计算机中并被计算机程序处理的符号的总称;
- 信息在计算机中的表现形式;
- 图像,声音,符号等;
数据元素(Data Element):
- 数据的基本单位,计算机中通常作为一个整体考虑。
- 如一棵树中的一个结点,一个图种的一个结点
- 一个数据元素可以有若干个数据项(Data Item)组成。
数据对象(Data Object):性质相同的数据元素的集合
数据结构:相互之间存在一种或多种关系的数据元素的集合。
- 数据元素之间的关系——结构
- 四种基本结构
1. 集合
2. 线性结构
3. 树形结构
4. 图状结构/网状结构
数据结构的形式定义:
- 一个二元组:
Data_Structure = (D,S)
D是数据元素的集合,S是D上的关系集合
数据的逻辑、物理(存储)结构
- 逻辑结构:数据元素之间的逻辑关系
- 物理结构:数据元素在计算机中的存储方法(表现和实现)
数据类型:一个值的集合和定义在该集合上的一组操作的总称。
抽象数据类型(ADT):数据结构+定义在此结构上的一组操作(和其表示实现无关)
- 注:抽象数据类型和数据类型实质上是同一个概念;ADT的范畴更广,“抽象”的意义在于数学抽象特性。
- 抽象数据类型的三元组表示(D,S,P)
D:数据 S:D上的关系 P:D上基本操作
抽象数据类型定义:
ADT 抽象数据类型名{
数据对象:数据对象定义
数据关系:数据关系定义
基本操作:基本操作定义
}ADT 抽象数据类型名
1.3 抽象数据类型的表示和实现
通过固有数据类型表示和实现,即利用处理器中已经存在的数据类型类说明新的结构。
由此利用类C语言描述:
- typedef数据类型定义ElemType数据元素类型
- Status函数结构状态的整数描述
- 几组特殊的赋值形式:交换赋值,数组赋值,条件赋值
- 三种结束语句:return break exit
- 与元素&&,或运算||
- 形参中T为值参,值不可变,&T为引用参数,值可变
1.4 算法与算法设计
算法:对特定问题求解步骤的一种描述,是指令的有序序列
算法的五个特性:
- 有穷性
- 确定性
- 可行性
- 输入
- 输出
算法设计的要求:
- 时间复杂度:算法执行时间随规模增长而增长的趋势。
T(n) = O(f(n))
f(n):算法规模,T(n):算法复杂度
估算办法:以算法中重复执行的次数作为依据。
三种常见的时间复杂度:
O(1) 常量级 O(n):线性级 O(n^2):平方级
- 空间复杂度:算法执行过程中所需的最大空间
S(n) = O(f(n))
估算方法:输入数据所占空间+程序所占空间+辅助变量所占空间