(第一讲)

26
第第 第第 (一) 第第 第第 (一) 第第第第第第 第第第第第第 第第第第第第第第第第第第 第第第第第第第第第第第第

Upload: indira-michael

Post on 02-Jan-2016

41 views

Category:

Documents


6 download

DESCRIPTION

数据结构. (第一讲). 绍兴文理学院. 计算机系计算机应用教研室. 为什么要学习 数据结构 ?. TKS. 2. 06:56. 起始课 、 第 1 章 绪论 (1). 一、教学目的: 明确数据结构课程在自身发展、应用等远景和本专业知识结构中的地位、作用;明确课程的特点、教学要求、学习方法;明确数据结构所研究的问题以及有关基本概念;明确抽象数据类型的概念和描述方法。. 二、教学重点: 数据结构课程在自身发展、应用等远景和本专业知识结构中的地位、作用;数据结构所研究的问题以及有关基本概念;抽象数据类型。. 三、教学难点: 理解 数据结构所研究的问题;抽象数据类型。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: (第一讲)

(第一讲)(第一讲)

绍兴文理学院绍兴文理学院计算机系计算机应用教研室计算机系计算机应用教研室

Page 2: (第一讲)

TKS

2

为什么要学习数据结构 ?

03:53

Page 3: (第一讲)

起始课 、 第 1 章 绪论 (1)一、教学目的:一、教学目的:明确数据结构课程在自身发展、应用等明确数据结构课程在自身发展、应用等远景和本专业知识结构中的地位、作用;明确课程的特点远景和本专业知识结构中的地位、作用;明确课程的特点、教学要求、学习方法;明确数据结构所研究的问题以及、教学要求、学习方法;明确数据结构所研究的问题以及有关基本概念;明确抽象数据类型的概念和描述方法。有关基本概念;明确抽象数据类型的概念和描述方法。 二、教学重点:二、教学重点:数据结构课程在自身发展、应用等远景和数据结构课程在自身发展、应用等远景和本专业知识结构中的地位、作用;数据结构所研究的问题本专业知识结构中的地位、作用;数据结构所研究的问题以及有关基本概念;抽象数据类型。以及有关基本概念;抽象数据类型。 三、教学难点:三、教学难点:理解理解数据结构所研究的问题;抽象数据类数据结构所研究的问题;抽象数据类型。型。 四、教学过程:四、教学过程:

Page 4: (第一讲)

TKS

4

11 、应用、科学的思想和方法-自身发展及其远景的需要、应用、科学的思想和方法-自身发展及其远景的需要(1) (1) ““ 校园卡校园卡””买饭菜等 买饭菜等

§1.0 为什么要学习数据结构

03:53

补充例1 三种 查找效 率的比 较 h ashdemo补充例1 三种 查找效 率的比 较 h ashdemo

产生 不同的产生 不同的 1000 1000 万个 由万个 由 55 到到 99 个字符 组成的 字符串 的困惑个字符 组成的 字符串 的困惑 …………

补充例2 用顺 序查找 产生的 效率 h ashsq补充例2 用顺 序查找 产生的 效率 h ashsq

补充例3 用哈 希查找 产生的 效率 h ashfi l e补充例3 用哈 希查找 产生的 效率 h ashfi l e

H a s h d e m o . e x e

H a s h s q . e x e

H a s h fi l e . e x e不同的查找不同的查找 主要用到数据的组织和查找。不同的数据的组织和查找效率是很主要用到数据的组织和查找。不同的数据的组织和查找效率是很不一样的,不同的查找方法其效率相差百倍以上乃至千倍。不一样的,不同的查找方法其效率相差百倍以上乃至千倍。 这是数据的组织和查找问题,在第这是数据的组织和查找问题,在第 77 章中进行讨论。章中进行讨论。(2) (2) 打电话-存在打电话-存在 05750575和和 0575805758 的城市电话区号吗?的城市电话区号吗? 若 存 在 , 则若 存 在 , 则 057505758834151188341511 是是 05750575 对 应 城 市 下 面 的对 应 城 市 下 面 的8834151188341511 还是还是 0575805758 对应城市下面的对应城市下面的 83415118341511 呢?呢? 程控电话如何处理?程控电话如何处理? 又:为什么北京的电话区号是又:为什么北京的电话区号是 010010 ,而绍兴的区号是,而绍兴的区号是 05750575 ?? 这是利用树结构的编码问题,在第这是利用树结构的编码问题,在第 55 章中进行讨论。章中进行讨论。

Page 5: (第一讲)

(3) (3) 高考分数的排名-以便录取 高考分数的排名-以便录取

在第在第 88 章中进行讨论。章中进行讨论。(4) (4) 快递线路、运费最省、最短旅行线路等问题 快递线路、运费最省、最短旅行线路等问题

TKS

5 03:53

在计算机系统软件和应用软件中在计算机系统软件和应用软件中排序排序的使用频度很高。然而不同的使用频度很高。然而不同的排序方法排序效率是很不一样的。其排序效率相差百倍以上。的排序方法排序效率是很不一样的。其排序效率相差百倍以上。

补充例补充例 44 22 种 排序方 法排序 效率的 比较种 排序方 法排序 效率的 比较 SORTSORTS o r t . e x e

不同的排序不同的排序

这是图结构问题,在第这是图结构问题,在第 66 章中进行讨论章中进行讨论。。

补充例5 最短 旅行线 路 t raffi cT r a ffi c . e x e

运行需 traffi c.rec文件支持,其他途径获得

最短路径最短路径

(5) (5) 管线、道路连通的最少代价问题管线、道路连通的最少代价问题 这是图结构问题,在第这是图结构问题,在第 66 章中进行讨论。章中进行讨论。 (6) (6) 工程计划问题工程计划问题

这是图结构问题,在第这是图结构问题,在第 66 章中进行讨论章中进行讨论。。

关键路径关键路径关键路径关键路径

Page 6: (第一讲)

33 、是后续课程和软件技术基础的需要、是后续课程和软件技术基础的需要 数据结构是操作系统、软件工程、计算机网络、编译原理、数据数据结构是操作系统、软件工程、计算机网络、编译原理、数据库等信息技术相关专业主要课程的先修课程;库等信息技术相关专业主要课程的先修课程; 是掌握一定的算法理论、数据组织和处理技术、提高编程技能和是掌握一定的算法理论、数据组织和处理技术、提高编程技能和提高实践动手能力需要。提高实践动手能力需要。44 、是培养科学的思想和方法、是培养科学的思想和方法,,整体把握利用计算机解决问题的需整体把握利用计算机解决问题的需要要

有人设想将常用的数千个汉字进行全排列,用这些字写出的不有人设想将常用的数千个汉字进行全排列,用这些字写出的不朽诗篇,名言佳句将都在其中了。朽诗篇,名言佳句将都在其中了。 每年按每年按 365365 天,每天天,每天 2424 小时,每小时小时,每小时 36003600 秒,对于每秒秒,对于每秒能生成能生成 101088 个排列的超高速电子计算机,即使一年到头从不休息地个排列的超高速电子计算机,即使一年到头从不休息地工 作 也 需 要 :工 作 也 需 要 : 3.043.04××10106464//

(365(365××2424××36003600××101088)≈)≈9.649.64××10104949 (( 年年 )) 。所以有些问题是。所以有些问题是计算机根本不能解决的。计算机根本不能解决的。

但就当但就当 n=50n=50 时,有时,有 n!≈3.04n!≈3.04 10 106464, ,

(7) (7) 问题规模的判断-时间和空间复杂度问题 问题规模的判断-时间和空间复杂度问题

TKS

6 03:53

补充例6 大整 数阶乘 快速 算法问 题 QFA CT补充例补充例 66 大整 数阶乘 快速 算法大整 数阶乘 快速 算法 问 题问 题 QFA CTQFA CTQ f a c t . e x e算法复杂度算法复杂度

22 、是考研的需要、是考研的需要22 、是考研的需要、是考研的需要

Page 7: (第一讲)

(1) (1) 现实世界:现实世界:现实中的事物和问题。现实中的事物和问题。 (2) (2) 信息世界:信息世界:把现实世界中的事物和问题经过分析、抽象、归把现实世界中的事物和问题经过分析、抽象、归纳、整理后得到的逻辑意义上的事物和问题的数据和数据关系。纳、整理后得到的逻辑意义上的事物和问题的数据和数据关系。 (3) (3) 机器世界:机器世界:把信息世界里的数据和数据关系,组织并存储到把信息世界里的数据和数据关系,组织并存储到计算机里,通过计算机来处理事物和解决问题。计算机里,通过计算机来处理事物和解决问题。66 、、计算机求解问题的步骤:

实际实际问题问题

问题问题模型模型

机器机器模型模型

求解求解算法算法

编制编制程序程序

问题问题实现实现

分析抽象

分析归纳

模型求解

命令编程

调试程序

55 、三个世界、三个世界

TKS

7 03:53

数据结构是三个世界的纽带 数据结构是三个世界的纽带 数据结构的知识和技能对现实世界数据结构的知识和技能对现实世界的分析到信息世界提供直接而重要的帮助,结合编程工具,实现由的分析到信息世界提供直接而重要的帮助,结合编程工具,实现由信息世界到机器世界的转换,是实现用计算机来解决问题强有力的信息世界到机器世界的转换,是实现用计算机来解决问题强有力的支撑。支撑。

Page 8: (第一讲)

§1.1 数据结构的研究内容 数据结构主要研究非数值计算问题,非数值计算问题无法用数数据结构主要研究非数值计算问题,非数值计算问题无法用数学方程建立数学模型。学方程建立数学模型。

例 1 书目自动检索系统

登录号:书名:作者名:分类号:出版单位:出版时间:价格:

书目卡片

书目文件

按书名 按作者名 按分类号

索引表

线性表1 、数据结构的研究内容

001001 高等数学 樊映川 S01002002 理论力学 罗远祥 L01003003 高等数学 华罗庚 S01004004 线性代数 栾汝书 S02………… ………… ………… …………

……………………004,……线性代数002,……理论力学001, 003,……

高等数学

……………………004,……

栾汝书002,……

华罗庚001,……

樊映川

……………………001, 003,……

S002,……L

TKS

8 03:53

Page 9: (第一讲)

例 2 人机对弈问题

…………

…… …… …… ……

TKS

9 03:53

Page 10: (第一讲)

TKS10

“深蓝”与卡斯帕罗夫对弈 ▲ 国际象棋棋盘有 64格,每方有 16 个子。棋手在思考下一步棋时大约有 35种合法选择。 ▲ 目前最好的国际象棋程序可以分析到七八个回合,若要求电脑能思考到第七个回合,即 14步棋,则需要有 3514种可能的结局。 ▲ 下棋程序靠的是基本的行棋知识和强大无比的检索演算能力。这种信息检索选择方式好比一棵树;共有 35 个枝干,每个枝干有35 个树叉,…,最终到树叶,即可供选择的结果。越好的程序,所派生的树枝树叉就越多。 ▲ 一般来讲,电脑每下一步棋,仍需有 500亿或 600亿种选择。

Page 11: (第一讲)

例 3 文件系统的系统结构图

TKS

1103:53

binbin liblib useruser etcetc

mathmath dsds swsw taotaoyinyin xiexie

Stack.cppStack.cpp Tree.cppTree.cppQueue.cppQueue.cpp

/(root)/(root)

Page 12: (第一讲)

v1

v2

v3

v4

v5

v6

10

5

6

6

610

712

10

15

v5

v1 v2

v3

v4

v6

例 4 最短管道连通问题

TKS

1203:53

2 、课程的地位和性质 沃思 (N.Wirth)(N.Wirth) 的一个著名公式:的一个著名公式: 数据结构数据结构 ++ 算法算法 == 程序程序 (( 获获 19841984 年计算图灵奖年计算图灵奖 )) 。。(1) (1) 地位:地位:计算机科学与技术专业计算机科学与技术专业等信息类专业的核心课程;信息等信息类专业的核心课程;信息类软件方向硕士研究生入学考的必考科目。类软件方向硕士研究生入学考的必考科目。(2) (2) 性质:性质:算法设计基础和软件技术的算法设计基础和软件技术的重要专业理论与技术基础课重要专业理论与技术基础课。。

Page 13: (第一讲)

3 、数据结构的产生和发展 为了研究数据的特性,数据之间的关系,数据的存储表示及其算为了研究数据的特性,数据之间的关系,数据的存储表示及其算法等,发展了数据结构。法等,发展了数据结构。 国外从国外从 19681968 年开始作为一门独立的课程。年开始作为一门独立的课程。 19681968 年美国唐年美国唐 ··欧欧 ··克努特教授开创了数据结构的最初体系,克努特教授开创了数据结构的最初体系,他他所著的所著的《《计算机程序设计艺术计算机程序设计艺术》》第一卷第一卷 (( 基本算法基本算法 )) 是第一本较是第一本较系统地阐述数据的逻辑结构和存储结构及其操作的著作。系统地阐述数据的逻辑结构和存储结构及其操作的著作。44 、课程学习的特点和要求、课程学习的特点和要求(1) (1) 课程学习的特点:课程学习的特点:我们学习的是基础的、常用的和比较成熟的我们学习的是基础的、常用的和比较成熟的基本数据结构,目的是掌握这些数据结构及算法并付之应用。基本数据结构,目的是掌握这些数据结构及算法并付之应用。(2) (2) 课程学习要求课程学习要求 :: 树立学好的信心,上课注意听,课前预习,课树立学好的信心,上课注意听,课前预习,课后复习后复习,,加强分析加强分析,,多上机练习多上机练习,,多问多问,,独立完成作业及上机实验独立完成作业及上机实验。。(3) (3) 课程网站:课程网站: http://sjjg.acmoj.nethttp://sjjg.acmoj.net

(4) (4) 师生互动中的用户名:师生互动中的用户名:学号,学号,密码:密码: XXXXXXXX

TKS

1303:53

Page 14: (第一讲)

(5) (5) 教材:教材:《《数据结构数据结构》》 (C(C 语言版语言版 ) ) 严蔚敏等编著 人民邮电出版严蔚敏等编著 人民邮电出版社 社 20112011 年 年 参考书:参考书:《《数据结构数据结构》》 (C(C 语言版语言版 ) ) 严蔚敏等编著 清华大学出严蔚敏等编著 清华大学出版社 版社 19971997 年年 《《数据结构数据结构》》许卓群等编著 高等教育出版社 许卓群等编著 高等教育出版社 19871987 年年 《《数据结构题集数据结构题集》》严蔚敏等编著 北京 清华大学出版社 严蔚敏等编著 北京 清华大学出版社 19991999 年年 《《数据结构数据结构》》 (C(C 语言篇语言篇 )) -习题与解析 李春葆编著 清华大学出-习题与解析 李春葆编著 清华大学出版社 版社 20022002 年年 《《数据结构数据结构》》唐策善等编著 高等教育出版社 唐策善等编著 高等教育出版社 19961996 年年§1.2 基本概念和术语基本概念和术语§1.2.1 数据、数据元素、数据项和数据对象11 、数据、数据 (Data)(Data) ::能输入到计算机并被计算机程序处理的符号总能输入到计算机并被计算机程序处理的符号总称称。。

22 、数据元素、数据元素 (Data Element)(Data Element) ::数据的基本单位,可以是若干数据的基本单位,可以是若干个数据项个数据项 (( 最小单位最小单位 )) 组成。组成。通常作为一个整体进行考虑和处理。通常作为一个整体进行考虑和处理。

TKS

1403:53

Page 15: (第一讲)

33 、数据项、数据项 (Data Item)(Data Item) ::是组成数据元素的、有独立含义的、是组成数据元素的、有独立含义的、不可分隔的最小单位。不可分隔的最小单位。

TKS

1503:53

44 、数据对象、数据对象 (Data Obiect)(Data Obiect) ::性质相同的数据元素的集合。性质相同的数据元素的集合。§1.2.2 数据结构数据结构 相互之间存在一种或多种特定关系的数据元素的集合。相互之间存在一种或多种特定关系的数据元素的集合。 ★★ 北大许卓群等编著教材上的定义:北大许卓群等编著教材上的定义:按某种按某种逻辑关系逻辑关系组织起来的组织起来的一批数据,按一定的一批数据,按一定的存储表示方式存储表示方式把它存储到计算机的存储器中,把它存储到计算机的存储器中,并在这些数据上定义了一个并在这些数据上定义了一个运算运算的集合,叫做一个的集合,叫做一个数据结构数据结构。。 数据结构综合三方面的内容:数据的数据结构综合三方面的内容:数据的逻辑结构逻辑结构,数据的,数据的存储结构存储结构及其及其运算运算。且不涉及元素本身的内容。。且不涉及元素本身的内容。11 、逻辑结构、逻辑结构 数据的数据的逻辑结构逻辑结构是从逻辑关条上描述数据,它与数据的存储无关是从逻辑关条上描述数据,它与数据的存储无关,是独立于计箅机的。,是独立于计箅机的。 数据的逻辑结构有两个要素:一是数据的逻辑结构有两个要素:一是数据元素;数据元素;二是关系。二是关系。

Page 16: (第一讲)

集合:集合:““同一集合同一集合””关系关系 线性结构:一对一关系线性结构:一对一关系

树形结构:一对多关系树形结构:一对多关系 图状或网状结构:多对多关系图状或网状结构:多对多关系

(1) (1) 四类基本结构四类基本结构

TKS

1603:53

Page 17: (第一讲)

数据的逻辑结构

线性结构 非线性结构

线性表 树结构 图结构

一般线性表 特殊线性表 线性表的推广 树 二叉树 有向图 无向图

线性表 栈与队列 字符串 数组 广义表

(2) (2) 几种逻辑结构层次图几种逻辑结构层次图

TKS

1703:53

Page 18: (第一讲)

计算机科学与技术山东女冯子晗060214216

150

计算机科学与技术吉林女王诗萌060214215

100

计算机科学与技术福建男薛 林060214202

50

计算机科学与技术安徽男杨 阳060214201

0

专 业籍贯性 别姓 名学 号地 址

22 、存储结构、存储结构 数据对象在计算机中的存储表示称为数据的存储结构,也称为物理结构。 数据元素在计算机中有两种基本的存储结构,分别是顺序存储结构和链式存储结构。(1) 顺序存储结构 顺序存储结构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系,通常借助程序设计语言的数组类型来描述。 学生基本信息表,对应的顺序存储结构如下。

TKS

1803:53

Page 19: (第一讲)

(2) 链式存储结构 借助指示元素存储地址的指针表示数据元素之间的逻辑关系。 学生基本信息表,对应的链式存储结构如下。

50计算机科学与技术吉林女王诗萌060214215

150

150计算机科学与技术福建男薛林060214202

100

^̂计算机科学与技术山东女冯子晗060214216

50

100计算机科学与技术安徽男杨阳060214201

0

后继结点的首地址专 业籍贯性别 姓 名学 号地址

060214201

杨阳男安徽

计算机科学与技术

TKS

1903:53

060214202

薛林男福建

计算机科学与技术

060214215

王诗萌女吉林

计算机科学与技术

060214216

冯子晗女山东

计算机科学与技术

更直观的图示表示如下:

Page 20: (第一讲)

§1.2.3 数据类型和抽象数据类型数据类型和抽象数据类型 1 、数据类型数据类型 (Data Type)Data Type)

是是一个值的集合和定义在这个值集上的一组操作的总称。2 、抽象数据类型 (Abstract Data TypeAbstract Data Type,, ADT)ADT)

指由用户定义的、表示应用问题的数学模型,以及定义在这个指由用户定义的、表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称,具体包括三部分:模型上的一组操作的总称,具体包括三部分:数据对象数据对象,数据对象,数据对象上上关系关系的集合,以及对数据对象的的集合,以及对数据对象的基本操作基本操作的集合。的集合。

TKS

2003:53

即: 抽象数据类型可以用以下的三元组来表示: ADT = ( D, S, P )

数据对象 D 上的关系集 D 上的操作集

Page 21: (第一讲)

抽象数据类型的定义格式如下:抽象数据类型的定义格式如下: ADT 抽象数据类型名{ 数据对象: < 数据对象的定义> 数据关系: < 数据关系的定义> 基本操作: < 基本操作的定义>} ADT 抽 象 数 据 类 型 名 (变量)

基本操作的定义格式为:基本操作名(参数表) 初始条件: < 初始条件描述 > 操作结果: < 操作结果描述 > 参数两种:赋值参数:提供输入 引用参数:以 & 打头

TKS

2103:53

1.3 抽象数据类型的表示与实现抽象数据类型的表示与实现 抽象数据类型独立于具体实现,将数据和操作抽象数据类型独立于具体实现,将数据和操作封装封装在一起,使得在一起,使得用户程序只能通过抽象数据类型定义的某些操作来用户程序只能通过抽象数据类型定义的某些操作来访问访问其中的数据其中的数据,从而实现了信息,从而实现了信息隐藏隐藏。。 抽象数据类型和类的概念实际上反映了程序或软件设计的两层抽抽象数据类型和类的概念实际上反映了程序或软件设计的两层抽象:抽象数据类型相当于在象:抽象数据类型相当于在概念层概念层 (( 或称为抽象层或称为抽象层 )) 上描述问题,上描述问题,而类相当于在而类相当于在实现层实现层上描述问题。上描述问题。

Page 22: (第一讲)

▲ 用类用类 CC 语言描述算法的说明语言描述算法的说明 (P8—(P8—

P9)P9)例 抽象数据类型复数的表示与实现表示与实现(1) 定义部分: ADT Complex{ 数据对象: D={el, e2∣el, e2∈R, R 是实数集 } 数据关系: s={<e1, e2>∣el 是复数的实部, e2 是复数的虚部 } 基本操作: Creat(&C, x , y) 操作结果:构造复数 C ,其实部和虚部分别被赋以参数 x 和 y的值。 GetReal(C) 初始条件:复数 C 已存在。 操作结果:返回复数 C 的实部值。

TKS

2203:53

Page 23: (第一讲)

GetImag(C)

初始条件:复数 C 已存在。 操作结果:返回复数 C 的虚部值。 Add(Cl,C2) 初始条件: Cl, C2 是复数。 操作结果:返回两个复数 Cl和 C2 的和。 Sub(Cl, C2) 初始条件: Cl, C2 是复数。 操作结果:返回两个复数 Cl和 C2 的差。}ADT Complex(2) 表示部分: typedef struct{ // 复数类型 float Realpart; // 实部 float Imagepart; // 虚部 }Complex;

TKS

2303:53

Page 24: (第一讲)

(3) 实现部分: void Creat(&Complex C,float x,float y){ // 构造一个复数 C.Realpart=x; C.Imagepart=y;}float GetReal(Complex C){ // 取复数 C=x+yi 的实部 return C.Realpart;}float GetImag(Complex C){ // 取复数 C=x+yi 的虚部 return C.Imagepart;}

TKS

2403:53

Page 25: (第一讲)

Complex Add(Complex Cl, Complex C2){// 求两个复数 Cl

和 C2 的和 sum Complex sum; sum.Realpart=Cl.Realpart+C2.Realpart; sum.Imagepart=Cl.Imagepart+C2.Imagepart; return sum:}Complex Sub (Complex Cl, Complex C2){ // 求两个复数 Cl和 C2 的差 difference Complex difference; difference.Realpart=Cl.Realpart-C2.Realpart; difference.Imagepart=Cl.Imagepart-C2.Imagepart; return difference;}

TKS

2503:53

Page 26: (第一讲)

TKS

2603:53

五、作业:五、作业:书面作业: P16: 5 ?