260 likes | 369 Views
数据结构. (第一讲). 绍兴文理学院. 计算机系计算机应用教研室. 为什么要学习 数据结构 ?. TKS. 2. 06:56. 起始课 、 第 1 章 绪论 (1). 一、教学目的: 明确数据结构课程在自身发展、应用等远景和本专业知识结构中的地位、作用;明确课程的特点、教学要求、学习方法;明确数据结构所研究的问题以及有关基本概念;明确抽象数据类型的概念和描述方法。. 二、教学重点: 数据结构课程在自身发展、应用等远景和本专业知识结构中的地位、作用;数据结构所研究的问题以及有关基本概念;抽象数据类型。. 三、教学难点: 理解 数据结构所研究的问题;抽象数据类型。
E N D
数据结构 (第一讲) 绍兴文理学院 计算机系计算机应用教研室
为什么要学习数据结构? TKS 2 06:56
起始课 、 第1章 绪论(1) 一、教学目的:明确数据结构课程在自身发展、应用等远景和本专业知识结构中的地位、作用;明确课程的特点、教学要求、学习方法;明确数据结构所研究的问题以及有关基本概念;明确抽象数据类型的概念和描述方法。 二、教学重点:数据结构课程在自身发展、应用等远景和本专业知识结构中的地位、作用;数据结构所研究的问题以及有关基本概念;抽象数据类型。 三、教学难点:理解数据结构所研究的问题;抽象数据类型。 四、教学过程:
TKS 4 §1.0 为什么要学习数据结构 1、应用、科学的思想和方法-自身发展及其远景的需要 (1) “校园卡”买饭菜等 不同的查找 主要用到数据的组织和查找。不同的数据的组织和查找效率是很不一样的,不同的查找方法其效率相差百倍以上乃至千倍。 这是数据的组织和查找问题,在第7章中进行讨论。 (2) 打电话-存在0575和05758的城市电话区号吗? 若存在,则057588341511是0575对应城市下面的88341511还是05758对应城市下面的8341511呢? 程控电话如何处理? 又:为什么北京的电话区号是010,而绍兴的区号是0575? 这是利用树结构的编码问题,在第5章中进行讨论。 06:56
(3) 高考分数的排名-以便录取 TKS 5 在计算机系统软件和应用软件中排序的使用频度很高。然而不同的排序方法排序效率是很不一样的。其排序效率相差百倍以上。 在第8章中进行讨论。 (4) 快递线路、运费最省、最短旅行线路等问题 不同的排序 最短路径 这是图结构问题,在第6章中进行讨论。 (5) 管线、道路连通的最少代价问题 这是图结构问题,在第6章中进行讨论。 (6) 工程计划问题 这是图结构问题,在第6章中进行讨论。 关键路径 06:56
(7) 问题规模的判断-时间和空间复杂度问题 TKS 6 有人设想将常用的数千个汉字进行全排列,用这些字写出的不朽诗篇,名言佳句将都在其中了。 但就当n=50时,有n!≈3.04 1064, 每年按365天,每天24小时,每小时3600秒,对于每秒能生成108个排列的超高速电子计算机,即使一年到头从不休息地工作也需要:3.04×1064/(365×24×3600×108)≈9.64×1049(年)。所以有些问题是计算机根本不能解决的。 算法复杂度 2、是考研的需要 3、是后续课程和软件技术基础的需要 数据结构是操作系统、软件工程、计算机网络、编译原理、数据库等信息技术相关专业主要课程的先修课程; 是掌握一定的算法理论、数据组织和处理技术、提高编程技能和提高实践动手能力需要。 4、是培养科学的思想和方法,整体把握利用计算机解决问题的需要 06:56
5、三个世界 TKS 7 (1) 现实世界:现实中的事物和问题。 (2) 信息世界:把现实世界中的事物和问题经过分析、抽象、归纳、整理后得到的逻辑意义上的事物和问题的数据和数据关系。 (3) 机器世界:把信息世界里的数据和数据关系,组织并存储到计算机里,通过计算机来处理事物和解决问题。 6、计算机求解问题的步骤: 实际问题 问题模型 机器模型 求解算法 编制程序 问题实现 分析 抽象 分析 归纳 模型 求解 命令 编程 调试 程序 数据结构是三个世界的纽带 数据结构的知识和技能对现实世界的分析到信息世界提供直接而重要的帮助,结合编程工具,实现由信息世界到机器世界的转换,是实现用计算机来解决问题强有力的支撑。 06:56
樊映川 001,… 高等数学 001,003,… L 002,… 华罗庚 002,… 理论力学 002,… S 001,003,… 栾汝书 004,… 线性代数 004,… …… …… …… …… …… …… 线性表 书目卡片 登录号: 书名: 作者名: 分类号: 出版单位: 出版时间: 价格: TKS 8 §1.1 数据结构的研究内容 数据结构主要研究非数值计算问题,非数值计算问题无法用数学方程建立数学模型。 1、数据结构的研究内容 书目文件 例1 书目自动检索系统 索引表 按书名 按作者名 按分类号 06:56
例2 人机对弈问题 树 …… …… …… …… …… …… TKS 9 06:56
“深蓝”与卡斯帕罗夫对弈 TKS 10 ▲ 国际象棋棋盘有64格,每方有16个子。棋手在思考下一步棋时大约有35种合法选择。 ▲ 目前最好的国际象棋程序可以分析到七八个回合,若要求电脑能思考到第七个回合,即14步棋,则需要有3514种可能的结局。 ▲ 下棋程序靠的是基本的行棋知识和强大无比的检索演算能力。这种信息检索选择方式好比一棵树;共有35个枝干,每个枝干有35个树叉,…,最终到树叶,即可供选择的结果。越好的程序,所派生的树枝树叉就越多。 ▲ 一般来讲,电脑每下一步棋,仍需有500亿或600亿种选择。
树 /(root) bin lib user etc xie yin tao math ds sw Queue.cpp Stack.cpp Tree.cpp TKS 11 例3 文件系统的系统结构图 06:56
图 10 12 7 5 15 6 10 6 6 10 v1 v2 v6 v3 v5 v4 TKS 12 例4 最短管道连通问题 v2 v1 v3 v6 v5 v4 2、课程的地位和性质 沃思(N.Wirth)的一个著名公式: 数据结构+算法=程序(获1984年计算图灵奖)。 (1) 地位:计算机科学与技术专业等信息类专业的核心课程;信息类软件方向硕士研究生入学考的必考科目。 (2) 性质:算法设计基础和软件技术的重要专业理论与技术基础课。 06:56
3、数据结构的产生和发展 TKS 13 为了研究数据的特性,数据之间的关系,数据的存储表示及其算法等,发展了数据结构。 国外从1968年开始作为一门独立的课程。 1968年美国唐·欧·克努特教授开创了数据结构的最初体系,他所著的《计算机程序设计艺术》第一卷(基本算法)是第一本较系统地阐述数据的逻辑结构和存储结构及其操作的著作。 4、课程学习的特点和要求 (1) 课程学习的特点:我们学习的是基础的、常用的和比较成熟的基本数据结构,目的是掌握这些数据结构及算法并付之应用。 (2) 课程学习要求:树立学好的信心,上课注意听,课前预习,课后复习,加强分析,多上机练习,多问,独立完成作业及上机实验。 (3) 课程网站:http://sjjg.acmoj.net (4) 师生互动中的用户名:学号,密码:XXXX 06:56
(5) 教材:《数据结构》(C语言版) 严蔚敏等编著 人民邮电出版社 2011年 TKS 14 参考书:《数据结构》(C语言版) 严蔚敏等编著 清华大学出版社 1997年 《数据结构》许卓群等编著 高等教育出版社 1987年 《数据结构题集》严蔚敏等编著 北京 清华大学出版社 1999年 《数据结构》(C语言篇)-习题与解析 李春葆编著 清华大学出版社 2002年 《数据结构》唐策善等编著 高等教育出版社 1996年 §1.2 基本概念和术语 §1.2.1 数据、数据元素、数据项和数据对象 1、数据(Data):能输入到计算机并被计算机程序处理的符号总称。 2、数据元素(Data Element):数据的基本单位,可以是若干个数据项(最小单位)组成。通常作为一个整体进行考虑和处理。 06:56
3、数据项(Data Item):是组成数据元素的、有独立含义的、不可分隔的最小单位。 TKS 15 4、数据对象(Data Obiect):性质相同的数据元素的集合。 §1.2.2 数据结构 相互之间存在一种或多种特定关系的数据元素的集合。 ★ 北大许卓群等编著教材上的定义:按某种逻辑关系组织起来的一批数据,按一定的存储表示方式把它存储到计算机的存储器中,并在这些数据上定义了一个运算的集合,叫做一个数据结构。 数据结构综合三方面的内容:数据的逻辑结构,数据的存储结构及其运算。且不涉及元素本身的内容。 1、逻辑结构 数据的逻辑结构是从逻辑关条上描述数据,它与数据的存储无关,是独立于计箅机的。 数据的逻辑结构有两个要素:一是数据元素;二是关系。 06:56
(1) 四类基本结构 TKS 16 集合:“同一集合”关系 线性结构:一对一关系 树形结构:一对多关系 图状或网状结构:多对多关系 06:56
(2) 几种逻辑结构层次图 TKS 17 数据的逻辑结构 线性结构 非线性结构 树结构 图结构 线性表 一般线性表 特殊线性表 线性表的推广 树 二叉树 有向图 无向图 线性表 栈与队列 字符串 数组 广义表 06:56
2、存储结构 地 址 学 号 姓 名 性 别 籍贯 专 业 0 060214201 杨 阳 男 安徽 计算机科学与技术 50 060214202 薛 林 男 福建 计算机科学与技术 100 060214215 王诗萌 女 吉林 计算机科学与技术 150 060214216 冯子晗 女 山东 计算机科学与技术 TKS 18 数据对象在计算机中的存储表示称为数据的存储结构,也称为物理结构。 数据元素在计算机中有两种基本的存储结构,分别是顺序存储结构和链式存储结构。 (1) 顺序存储结构 顺序存储结构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系,通常借助程序设计语言的数组类型来描述。 学生基本信息表,对应的顺序存储结构如下。 06:56
(2) 链式存储结构 地址 学 号 姓 名 性别 籍贯 专 业 后继结点的首地址 0 060214201 杨阳 男 安徽 计算机科学与技术 100 50 060214216 冯子晗 女 山东 计算机科学与技术 ^ 100 060214202 薛林 男 福建 计算机科学与技术 150 150 060214215 王诗萌 女 吉林 计算机科学与技术 50 TKS 19 借助指示元素存储地址的指针表示数据元素之间的逻辑关系。 学生基本信息表,对应的链式存储结构如下。 更直观的图示表示如下: 06:56
§1.2.3 数据类型和抽象数据类型 TKS 20 1、数据类型(Data Type) 是一个值的集合和定义在这个值集上的一组操作的总称。 2、抽象数据类型(Abstract Data Type,ADT) 指由用户定义的、表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称,具体包括三部分:数据对象,数据对象上关系的集合,以及对数据对象的基本操作的集合。 即: 抽象数据类型可以用以下的三元组来表示: ADT = (D,S,P) 数据对象 D上的关系集 D上的操作集 06:56
抽象数据类型的定义格式如下: 基本操作的定义格式为: 基本操作名(参数表) 初始条件:<初始条件描述> 操作结果:<操作结果描述> 参数两种:赋值参数:提供输入 引用参数:以&打头 TKS 21 ADT 抽象数据类型名 { 数据对象:<数据对象的定义> 数据关系:<数据关系的定义> 基本操作:<基本操作的定义> } ADT抽象数据类型名(变量) 1.3 抽象数据类型的表示与实现 抽象数据类型独立于具体实现,将数据和操作封装在一起,使得用户程序只能通过抽象数据类型定义的某些操作来访问其中的数据,从而实现了信息隐藏。 抽象数据类型和类的概念实际上反映了程序或软件设计的两层抽象:抽象数据类型相当于在概念层(或称为抽象层)上描述问题,而类相当于在实现层上描述问题。 06:56
▲ 用类C语言描述算法的说明(P8—P9) TKS 22 例 抽象数据类型复数的表示与实现 (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的实部值。 06:56
GetImag(C) TKS 23 初始条件:复数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; 06:56
(3) 实现部分: TKS 24 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; } 06:56
Complex Add(Complex Cl, Complex C2){//求两个复数Cl和C2的和sum TKS 25 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; } 06:56
TKS 26 五、作业: ? 书面作业:P16:5 06:56