数据结构课程精讲教案-复旦大学(共计1061页)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构教程
DATA STRUCTURES
课程特点
介绍如何组织各种数据在计算机中的存储、 传递和转换; 课程采用面向对象的观点讨论数据结构技术; 兼有面向过程和面向对象双重特色的 C++ 语 言作为算法的描述工具; 强化数据结构基本知识,推动实际应用能力的 培养。
2
课程要求
“听课”+“自学”+“实践”并举
13
N个网站之间的连通关系
1 6 5 4 2 3 5 1 6 4 2 3
树形关系
网状关系
14
数据结构是数据的组织形式
数据元素间的逻辑关系,即数据的逻辑 结构; 数据元素及其关系在计算机存储内的表 示,即数据的存储表示; 数据的运算,即对数据元素施加的操作。 例如:座位/学生(按班级)
15
DS第一个重要部分: 数据的逻辑结构
温故:算法定义
定义:一个有穷的指令集,这些指令为解 决某一特定任务规定一个运算序列。 特性:
输入Input 有0个或多个输入; 输出Output 有一个或多个输出(处理结果); 确定性 每步定义都是确切无歧义的; 有穷性 算法应在执行有穷步后结束; 有效性 每一条运算应足够基本。
数据是信息的载体,是描述客观事物 的数、字符、以及所有能输入到计算 机中,被计算机程序识别和处理的符 号的集合。 数值性数据 非数值性数据
10
基本概念: 数据元素 (Data Element)
数据的基本单位,在计算机程序中常作 为一个整体进行考虑和处理。 有时一个数据元素可以由若干数据项 (Data Item)组成。数据项是具有独立含 义的最小标识单位。 数据元素又称为元素、结点、记录。
数据的逻辑结构从逻辑关系上描述数 据,与数据的存储无关; 数据的逻辑结构可以看作是从具体问 题抽象出来的数据模型; 数据的逻辑结构与数据元素的相对 (存储)位置无关。
16
数据的逻辑结构分类
线性结构 线性表 非线性结构 树 图(或网络)
17
线性结构:
bin dev etc lib user
5
“学生”表格
1 2 3 4 5 6 7 8 9 学 号 98131 98164 98165 98182 98224 98236 98297 98310 98318 姓 名 刘激扬 衣春生 卢声凯 袁秋慧 洪 伟 熊南燕 宫 力 蔡晓莉 陈 健 性别 男 男 男 女 男 女 男 女 男 籍 北 青 天 广 太 苏 北 昆 杭 贯 京 岛 津 州 原 州 京 明 州 出生年月 1979.12 1979.07 1981.02 1980.10 1981.01 1980.03 1981.01 1981.02 1979.12
学生选课系统中实体构成的网状关系
学生 (学号,姓名,性别,籍贯) 课程 (课程号,课程名,学分)
选课 (学号,课程号,成绩)
8
UNIX文件系统的系统结构图
/ (root) bin lib user etc
math
ds
sw
yin
tao
xie
Queue.cpp Stack.cpp
Tree.cpp
9百度文库
基本概念: 数据 (Data)
19
1 6
2
1 19 3 11 33
16 21 6 14
2 5 6 6 3
5
4
5
18
4
图结构
网络结构
20
DS第二个重要部分: 数据的存储结构
数据的存储结构是逻辑结构用计算机 语言的实现; 数据的存储结构依赖于计算机语言。 顺序存储表示:逻辑相邻则物理相邻 链接存储表示:逻辑相邻未必物理相邻 索引存储表示:为数据建立索引表 散列存储表示:根据数据的关键码用散 列函数计算出该数据的存储地址
11
基本概念: 数据对象 (Data Object)
数据的子集,具有相同性质的数据成员 (数据元素)的集合。 整数数据对象 N={0, ±1, ±2, …} 学生数据对象 数据对象中所有成员之间存在某种关系, 如学生按学号的排序;按性别的分类等。 数据成员及其之间关系,是数据结构研究 的主要内容。
12
什么是数据结构
数据以及数据之间的相互关系,即计算机 中存储和组织数据的形式。
通常可以用一个二元组<D,R>来表示。 或写成DS=<D,R>。
其中 D 是数据集合(数据对象), R 是 D 中 数据元素之间所存在的关系的有限集合。
数据结构(技术)就是根据各种不同的数据 集合和数据元素之间的关系,研究如何表示、存 储和操作(查找、插入、删除、修改、排序)这 些数据的技术。
树形结构:
树
1 2
二叉树
1
二叉搜索树
9 3 6 3
1 13
3 6 7 8
4 9 10 7 4 8
2
5
5 9
6
8 5 7
10 11
18
11 12 13 14
堆结构(树的特例):
12 11 7 3 5 10 4 8 2 6 9 1 8 6 9 2 3 10 1 5 7
4 11 12
“最大”堆
“最小”堆
6
“课程”表格
课程编号 024002 024010 024016 024020 024021 024024 024026 课 程 名 程序设计基础 汇编语言 计算机原理 数据结构 微机技术 操作系统 数据库原理 学时 64 48 64 64 64 48 48
7
“选课单”包含如下信息
学号 课程编号 成绩 时间
21
数据结构的抽象层次
22
线性聚集类 直接存取类 数组、文件 顺序存取类 表、栈、队列、优先队列 广义索引类 线性索引、搜索树 非线性聚集类 层次聚集类 树、二叉树、堆 群聚集类 集合、图
23
数据结构的课程内容体系
方面 层次 抽象 实现 评价 数据表示 数据处理
逻辑结构 基本运算 存储结构 算法 不同数据结构的比较 及算法分析
掌握重要数据结构的概念、使用方法及 实现技术; 学会做简单的算法分析,包括算法的时 间代价和空间代价。
3
数据结构的概念 算法定义 算法性能分析与度量 数据结构的抽象形式 C++基础 本章小结
1.1 什么是数据结构
信息是客观世界在人脑中的反映。 数据是信息的载体。 怎样在计算机中存储和组织数据? 举例说明
25
算法Algorithm=程序Program?
DATA STRUCTURES
课程特点
介绍如何组织各种数据在计算机中的存储、 传递和转换; 课程采用面向对象的观点讨论数据结构技术; 兼有面向过程和面向对象双重特色的 C++ 语 言作为算法的描述工具; 强化数据结构基本知识,推动实际应用能力的 培养。
2
课程要求
“听课”+“自学”+“实践”并举
13
N个网站之间的连通关系
1 6 5 4 2 3 5 1 6 4 2 3
树形关系
网状关系
14
数据结构是数据的组织形式
数据元素间的逻辑关系,即数据的逻辑 结构; 数据元素及其关系在计算机存储内的表 示,即数据的存储表示; 数据的运算,即对数据元素施加的操作。 例如:座位/学生(按班级)
15
DS第一个重要部分: 数据的逻辑结构
温故:算法定义
定义:一个有穷的指令集,这些指令为解 决某一特定任务规定一个运算序列。 特性:
输入Input 有0个或多个输入; 输出Output 有一个或多个输出(处理结果); 确定性 每步定义都是确切无歧义的; 有穷性 算法应在执行有穷步后结束; 有效性 每一条运算应足够基本。
数据是信息的载体,是描述客观事物 的数、字符、以及所有能输入到计算 机中,被计算机程序识别和处理的符 号的集合。 数值性数据 非数值性数据
10
基本概念: 数据元素 (Data Element)
数据的基本单位,在计算机程序中常作 为一个整体进行考虑和处理。 有时一个数据元素可以由若干数据项 (Data Item)组成。数据项是具有独立含 义的最小标识单位。 数据元素又称为元素、结点、记录。
数据的逻辑结构从逻辑关系上描述数 据,与数据的存储无关; 数据的逻辑结构可以看作是从具体问 题抽象出来的数据模型; 数据的逻辑结构与数据元素的相对 (存储)位置无关。
16
数据的逻辑结构分类
线性结构 线性表 非线性结构 树 图(或网络)
17
线性结构:
bin dev etc lib user
5
“学生”表格
1 2 3 4 5 6 7 8 9 学 号 98131 98164 98165 98182 98224 98236 98297 98310 98318 姓 名 刘激扬 衣春生 卢声凯 袁秋慧 洪 伟 熊南燕 宫 力 蔡晓莉 陈 健 性别 男 男 男 女 男 女 男 女 男 籍 北 青 天 广 太 苏 北 昆 杭 贯 京 岛 津 州 原 州 京 明 州 出生年月 1979.12 1979.07 1981.02 1980.10 1981.01 1980.03 1981.01 1981.02 1979.12
学生选课系统中实体构成的网状关系
学生 (学号,姓名,性别,籍贯) 课程 (课程号,课程名,学分)
选课 (学号,课程号,成绩)
8
UNIX文件系统的系统结构图
/ (root) bin lib user etc
math
ds
sw
yin
tao
xie
Queue.cpp Stack.cpp
Tree.cpp
9百度文库
基本概念: 数据 (Data)
19
1 6
2
1 19 3 11 33
16 21 6 14
2 5 6 6 3
5
4
5
18
4
图结构
网络结构
20
DS第二个重要部分: 数据的存储结构
数据的存储结构是逻辑结构用计算机 语言的实现; 数据的存储结构依赖于计算机语言。 顺序存储表示:逻辑相邻则物理相邻 链接存储表示:逻辑相邻未必物理相邻 索引存储表示:为数据建立索引表 散列存储表示:根据数据的关键码用散 列函数计算出该数据的存储地址
11
基本概念: 数据对象 (Data Object)
数据的子集,具有相同性质的数据成员 (数据元素)的集合。 整数数据对象 N={0, ±1, ±2, …} 学生数据对象 数据对象中所有成员之间存在某种关系, 如学生按学号的排序;按性别的分类等。 数据成员及其之间关系,是数据结构研究 的主要内容。
12
什么是数据结构
数据以及数据之间的相互关系,即计算机 中存储和组织数据的形式。
通常可以用一个二元组<D,R>来表示。 或写成DS=<D,R>。
其中 D 是数据集合(数据对象), R 是 D 中 数据元素之间所存在的关系的有限集合。
数据结构(技术)就是根据各种不同的数据 集合和数据元素之间的关系,研究如何表示、存 储和操作(查找、插入、删除、修改、排序)这 些数据的技术。
树形结构:
树
1 2
二叉树
1
二叉搜索树
9 3 6 3
1 13
3 6 7 8
4 9 10 7 4 8
2
5
5 9
6
8 5 7
10 11
18
11 12 13 14
堆结构(树的特例):
12 11 7 3 5 10 4 8 2 6 9 1 8 6 9 2 3 10 1 5 7
4 11 12
“最大”堆
“最小”堆
6
“课程”表格
课程编号 024002 024010 024016 024020 024021 024024 024026 课 程 名 程序设计基础 汇编语言 计算机原理 数据结构 微机技术 操作系统 数据库原理 学时 64 48 64 64 64 48 48
7
“选课单”包含如下信息
学号 课程编号 成绩 时间
21
数据结构的抽象层次
22
线性聚集类 直接存取类 数组、文件 顺序存取类 表、栈、队列、优先队列 广义索引类 线性索引、搜索树 非线性聚集类 层次聚集类 树、二叉树、堆 群聚集类 集合、图
23
数据结构的课程内容体系
方面 层次 抽象 实现 评价 数据表示 数据处理
逻辑结构 基本运算 存储结构 算法 不同数据结构的比较 及算法分析
掌握重要数据结构的概念、使用方法及 实现技术; 学会做简单的算法分析,包括算法的时 间代价和空间代价。
3
数据结构的概念 算法定义 算法性能分析与度量 数据结构的抽象形式 C++基础 本章小结
1.1 什么是数据结构
信息是客观世界在人脑中的反映。 数据是信息的载体。 怎样在计算机中存储和组织数据? 举例说明
25
算法Algorithm=程序Program?