电子教案·《数据结构(C语言描述)》课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《电子教案·《数据结构(C语言描述)》课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构C语言描述 电子 教案 数据结构 语言 描述 课件
- 资源描述:
-
1、2022年7月28日1 1.1 为什么学习数据结构为什么学习数据结构 1.2 数据结构的有关概念和术语数据结构的有关概念和术语 1.3 算法和算法描述算法和算法描述 1.4 算法的时空效率分析方法算法的时空效率分析方法 1.5 小结与习题小结与习题2022年7月28日2主要介绍课程中常用术语、常用数据结构及用类主要介绍课程中常用术语、常用数据结构及用类C C语语言实现算法描述的一般规则,算法的时间复杂度和言实现算法描述的一般规则,算法的时间复杂度和空间复杂度分析与评价。空间复杂度分析与评价。本章主要内容本章主要内容 通过本章学习,应掌握如下内容:通过本章学习,应掌握如下内容:数据结构中的基本概
2、念及常用术语。数据结构中的基本概念及常用术语。线性结构、树型结构和图型结构等的逻辑特点。线性结构、树型结构和图型结构等的逻辑特点。算法的定义、特性及用类算法的定义、特性及用类C C语言描述算法的规则。语言描述算法的规则。评价算法优劣的标准:时间复杂度、空间复杂度评价算法优劣的标准:时间复杂度、空间复杂度的定义及表示。的定义及表示。2022年7月28日31.1 1.1 为什么要学习数据结构为什么要学习数据结构 研究数据的特性、研究数据的特性、数据间的相互关系及其对应数据间的相互关系及其对应的存储表示,并利用这些特性、关系和存储表示设的存储表示,并利用这些特性、关系和存储表示设计出相应的算法和程序
3、。计出相应的算法和程序。为什么要学习数据结构?为什么要学习数据结构?计算机处理的数据量越来越大;计算机处理的数据量越来越大;数据的类型越来越多;数据的类型越来越多;数据的结构越来越复杂。数据的结构越来越复杂。解决一个问题时几个步骤:抽象出一个适当的数学解决一个问题时几个步骤:抽象出一个适当的数学模型,设计或选择一个解决此类数学模型的算法,模型,设计或选择一个解决此类数学模型的算法,编写程序进行调试、测试,直至得到最终的解答。编写程序进行调试、测试,直至得到最终的解答。2022年7月28日4【例例1-11-1】学生信息检索问题。学生信息包括学号、姓名、性别和成绩等,一行学生信息检索问题。学生信息
4、包括学号、姓名、性别和成绩等,一行为为一个记录一个记录,表示一个学生的信息(也称为一个,表示一个学生的信息(也称为一个数据元素数据元素),一列为一个),一列为一个属性属性。学学 号号姓姓 名名性性 别别成成 绩绩2005060120050601张张 三三男男5185182005060220050602李一宁李一宁女女4964962005060320050603吴吴 磊磊女女581.5581.52005063620050636梁梁 磊磊男男529529线性关系线性关系:对线性表的主要操作有查找、修改、插入和删除等。对线性表的主要操作有查找、修改、插入和删除等。2022年7月28日5【例例1-21
5、-2】某大学专业设置问题。显然这种关系用某大学专业设置问题。显然这种关系用“树树”型结构来表示更形象。通型结构来表示更形象。通常用来表示结点的分层组织,结点之间是常用来表示结点的分层组织,结点之间是一对多的关系一对多的关系。对树型结构主要操作有查。对树型结构主要操作有查找、修改、插入和删除等。找、修改、插入和删除等。*大学大学机械工程系机械工程系电子工程系电子工程系计算机与信息工程计算机与信息工程系系机械机械制造制造材料材料科学科学电子电子应用应用电气自电气自动化动化计算机应计算机应用与维护用与维护计算机应计算机应用与维护用与维护2022年7月28日6【例例1-31-3】通信网络问题。带圆圈的
6、顶点表示城市,通信网络问题。带圆圈的顶点表示城市,顶点和顶点之间的连线和数据表示城市之间的通信线顶点和顶点之间的连线和数据表示城市之间的通信线路及其长度。,各顶点之间是多对多的关系,是路及其长度。,各顶点之间是多对多的关系,是网网状状结构,也称为结构,也称为图型图型结构,操作有:求从一个顶点到另结构,操作有:求从一个顶点到另一个顶点的最短路径等。一个顶点的最短路径等。由以上三个例子可见,由以上三个例子可见,描述这类非数值计算问描述这类非数值计算问题的数学模型有题的数学模型有线性表、线性表、树、图树、图等。所有的计算等。所有的计算机系统软件和应用软件机系统软件和应用软件都要用到各种类型的数都要用
7、到各种类型的数据结构。据结构。B CDFEA604540423040806532262022年7月28日71.2 1.2 数据结构的有关概念和术语数据结构的有关概念和术语 1.2.1 基本概念和术语基本概念和术语1数据(数据(Data)是描述客观事物的数值、字符以及所有能被输入到计算机并能被是描述客观事物的数值、字符以及所有能被输入到计算机并能被计算机识别、存储和处理的符号的集合。客观事物包括数值数据和非数值数据。计算机识别、存储和处理的符号的集合。客观事物包括数值数据和非数值数据。数值数据:整数、实数或复数;非数值数据:字符、文字、图形、图像和声音等。数值数据:整数、实数或复数;非数值数据:
8、字符、文字、图形、图像和声音等。2数据元素(数据元素(Data Element)是数据的基本单位。在不同的条件下,数据元素又是数据的基本单位。在不同的条件下,数据元素又可称为可称为元素、结点、顶点、记录元素、结点、顶点、记录等。等。数据项:数据项:数据结构中讨论的最小单位。一个数据元素可由若干个数据项(数据结构中讨论的最小单位。一个数据元素可由若干个数据项(Data Item)组成。例如,学生信息表的每一个数据元素就是一个学生记录,它包括学)组成。例如,学生信息表的每一个数据元素就是一个学生记录,它包括学生的学号、姓名、性别、成绩等数据项。生的学号、姓名、性别、成绩等数据项。2022年7月28
9、日83数据对象(数据对象(Data Object)是具有是具有相同性质数据元素相同性质数据元素的集合。的集合。4数据类型数据类型(Data Type)在用高级语言编写的程序中,每个变量、常量或表达在用高级语言编写的程序中,每个变量、常量或表达式都有一个它所属的确定的数据类型。式都有一个它所属的确定的数据类型。5抽象数据类型抽象数据类型(Abstract Data Type,简称,简称ADT)是指基于逻辑关系的数据类)是指基于逻辑关系的数据类型以及定义在该类型之上的一组操作。型以及定义在该类型之上的一组操作。ADT 抽象数据类型名抽象数据类型名 数据对象:(数据对象的定义)数据对象:(数据对象的
10、定义)数据关系:(数据关系的定义)数据关系:(数据关系的定义)基本操作:(基本操作的定义)基本操作:(基本操作的定义)2022年7月28日9【例例1-4】线性表的抽象数据类型可描述如下:线性表的抽象数据类型可描述如下:ADT Linear_list 数据元素数据元素 所有所有ai属于同一数据对象,属于同一数据对象,i=1,2,n (n1)逻辑结构逻辑结构 所有数据元素所有数据元素ai存在次序关系(存在次序关系(ai,ai+1),),a1无前驱,无前驱,an无后继。无后继。操作操作 /*设设L为为Linear_list类型的线性表类型的线性表*/InitList(L););/*建立一个空的线性表
11、建立一个空的线性表L*/Length(L););/*求线性表求线性表L的长度的长度*/GetElement(L,i););/*取线性表取线性表L中的第中的第i个元素个元素*/Locate(L,x););/*确定元素确定元素x在线性表在线性表L中的位置中的位置*/Insert(L,i,x););/*在线性表在线性表L中的第中的第i个位置处插入数据元素个位置处插入数据元素x*/Delete(L,i););/*删除表删除表L中第中第i个位置的元素个位置的元素*/;/*ADT Linear_list */2022年7月28日101.2.2 数据结构定义数据结构定义数据结构数据结构(Data Struc
12、ture)是指互相之间存在着一种或多种关系的数据元素的)是指互相之间存在着一种或多种关系的数据元素的集合。数据元素之间的关系称为结构。数据的结构包括逻辑结构和物理结构。集合。数据元素之间的关系称为结构。数据的结构包括逻辑结构和物理结构。(1)逻辑结构:)逻辑结构:是数据元素之间的相互逻辑关系,它与数据的存储无关,是独是数据元素之间的相互逻辑关系,它与数据的存储无关,是独立于计算机而存在。立于计算机而存在。数据结构是由两个集合构成的一个二元组:数据结构是由两个集合构成的一个二元组:Data_Structure(D,R)Data_Structure是一种数据结构,它由同属一个数据对象的数据元素的有
13、限集合是一种数据结构,它由同属一个数据对象的数据元素的有限集合D和和D上二元关系的有限集合上二元关系的有限集合R组成。其中:组成。其中:D=di|1in,n1R=rj|1jm,m12022年7月28日11di表示第表示第i个数据元素,个数据元素,rj表示第表示第j个关系。个关系。D上二元关系上二元关系R是序偶的集合。对于是序偶的集合。对于R中的任一序偶中的任一序偶(x,yD),x称为序偶的称为序偶的第一元素,第一元素,y称为序偶的第二元素,又称序偶的第一元素是第二元素的直接前驱;称为序偶的第二元素,又称序偶的第一元素是第二元素的直接前驱;第二元素为第一个元素的直接后继。第二元素为第一个元素的直
14、接后继。【例例1-5】树型结构中的圆圈代表数据元素,树型结构中的圆圈代表数据元素,带箭头的连线表示元素之间的关系,试用二带箭头的连线表示元素之间的关系,试用二元组表示法表示其逻辑结构。元组表示法表示其逻辑结构。解:二元组为解:二元组为(D,R)其中,其中,D=A,B,C,E,F,G,H,I,J;R=,ABCEFGHIJ2022年7月28日12通常有下列四种基本的结构:通常有下列四种基本的结构:a.a.集合结构集合结构。集合是元素关系极为松散的一种结构。集合是元素关系极为松散的一种结构。b.b.线性结构线性结构。线性结构的逻辑特征是:若结构是非空集,则有且仅有一个开始结。线性结构的逻辑特征是:若
15、结构是非空集,则有且仅有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继。点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继。c.c.树型结构树型结构。该结构的数据元素之间存在着一对多的关系。该结构的数据元素之间存在着一对多的关系。d.d.图型结构图型结构。该结构的数据元素之间存在着多对多的关系,图型结构也称作网状。该结构的数据元素之间存在着多对多的关系,图型结构也称作网状结构。结构。(2 2)物理结构(或存储结构)物理结构(或存储结构)是数据结构在计算机中的表示(又称映像),它是数据结构在计算机中的表示(又称映像),它包括数据元素的机内表示和关系的
16、机内表示。具体实现的方法有顺序、链接、索包括数据元素的机内表示和关系的机内表示。具体实现的方法有顺序、链接、索引、散列等多种,数据的具体操作与存储结构有很密切的联系。引、散列等多种,数据的具体操作与存储结构有很密切的联系。数据结构作为一门学科主要研究数据的各种数据结构作为一门学科主要研究数据的各种逻辑结构逻辑结构和和存储结构存储结构,以及对数据,以及对数据的的各种操作各种操作。同时还要考虑执行算法时的。同时还要考虑执行算法时的时间和空间效率时间和空间效率。2022年7月28日131.3 1.3 算法和算法描述算法和算法描述 有穷性有穷性。一个算法必须在有穷步之后结束,即必须在有限时间内完成。一
17、个算法必须在有穷步之后结束,即必须在有限时间内完成。确定性确定性。算法的每一步必须有确切的定义,无二义性。算法的每一步必须有确切的定义,无二义性。可行性可行性。算法中的每一步都可以通过已经实现的基本运算的有限次执行得以实。算法中的每一步都可以通过已经实现的基本运算的有限次执行得以实现。现。输入输入。一个算法具有零个或多个输入,这些输入取自特定的数据对象集合。一个算法具有零个或多个输入,这些输入取自特定的数据对象集合。输出输出。一个算法具有一个或多个输出,这些输出同输入之间存在某种特定的关。一个算法具有一个或多个输出,这些输出同输入之间存在某种特定的关系。系。1.3.1 算法与算法特性算法与算法
18、特性算法算法(Algorithm)是对特定问题求解步骤的一种描述,是指令的有限序列。一个)是对特定问题求解步骤的一种描述,是指令的有限序列。一个算法应该具有下列特性:算法应该具有下列特性:2022年7月28日14一个好的算法通常要达到以下的要求:一个好的算法通常要达到以下的要求:v正确正确。执行结果应当满足预先规定的功能和性能要求。执行结果应当满足预先规定的功能和性能要求。v可读可读。应当思路清晰、层次分明、简单明了、易读易懂。应当思路清晰、层次分明、简单明了、易读易懂。v健壮健壮。当输入不合法数据时,应能作适当处理,不至引起严重后果。当输入不合法数据时,应能作适当处理,不至引起严重后果。v高
19、效高效。有效使用存储空间和有较高的时间效率。有效使用存储空间和有较高的时间效率。1.3.2 算法描述最简单的方法是使用自然语言,其优点是简单且便于人们对算法的阅读;缺点是转最简单的方法是使用自然语言,其优点是简单且便于人们对算法的阅读;缺点是转换成高级语言困难。换成高级语言困难。类类C C语言语言忽略高级程序设计语言中一些严格的语法规则与描述细节,因此它比程序忽略高级程序设计语言中一些严格的语法规则与描述细节,因此它比程序设计语言更容易描述和被人理解,比自然语言更接近程序设计语言,很容易被转换设计语言更容易描述和被人理解,比自然语言更接近程序设计语言,很容易被转换成高级语言。成高级语言。202
20、2年7月28日15本书对所用类本书对所用类C语言作如下约定:语言作如下约定:1问题的规模用问题的规模用MAXSIZE#define MAXSIZE 602预定义常量和类型:预定义常量和类型:#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -1typedef int Status;3数据结构(存储结构)的表示用类型定义(数据结构(存储结构)的表示用类型定义(typedef)描述。数据元素类型约定)描述。数据元素类型约定为为 ElemType,由用户在使用该数据类型时自行定义。,由用户在使用该数据类型
21、时自行定义。例例1.学生信息检索系统中,用一维数组作存学生信息检索系统中,用一维数组作存储储 n 个学生的信息,数组中的数据元素有个学生的信息,数组中的数据元素有4个域:学号、姓名、性别和成绩:个域:学号、姓名、性别和成绩:typedef struct std_info long int Num;/*学号域学号域*/char Name8;/*姓名域姓名域*/char Sex;/*性别域性别域*/float Score;/*成绩域成绩域*/ElemType;2022年7月28日164基本操作的算法都用以下形式的函数描述基本操作的算法都用以下形式的函数描述函数类型函数类型 函数名函数名(函数参数表
22、函数参数表)/*算法说明算法说明*/语句序列;语句序列;/*函数名函数名*/5C语言中的常用语句语言中的常用语句赋值(赋值(=)、选择()、选择(if、if else、switch case default)、循环()、循环(for、while、do while)、结束()、结束(return、break、continue、exit)、输入和输出等语句。)、输入和输出等语句。6基本运算和基本函数基本运算和基本函数基本运算有基本运算有+、-、*、/、%、-、&和和|等。等。基本函数有基本函数有max、min、abs、fabs、eof 等。等。2022年7月28日17 例设某班级有例设某班级有n个
23、学生,编写算法,查找班级中成绩最高的学生,并输出该学个学生,编写算法,查找班级中成绩最高的学生,并输出该学生的所有信息。生的所有信息。分析:,算法依次查看数组中的元素,并保存当前最高成绩及其下标。使用类分析:,算法依次查看数组中的元素,并保存当前最高成绩及其下标。使用类C语语言编写:言编写:int largest(ElemType SMAXSIZE,int n)float currlarge=0.0;int i,j=0;/*赋初值赋初值*/for(i=0;i currlarge)j=i;currlarge=Si.Score;printf(“%10ld%10s%10c%10fn”,Sj.Num,
24、Sj.name,Sj.Sex,Sj.Score);/*largest*/typedef struct std_info long int Num;char Name8;char Sex;float Score;ElemType;2022年7月28日181.4 1.4 算法时空效率分析方法算法时空效率分析方法评价算法的性能用时间复杂度与空间复杂度来度量。评价算法的性能用时间复杂度与空间复杂度来度量。1、算法的时间复杂度、算法的时间复杂度算法的时间复杂度(算法的时间复杂度(Time complexity)是指算法转换为程序后)是指算法转换为程序后(这里仍称为算法这里仍称为算法)在计算机上从开始运行
25、到结束所需要的时间。运行所需要的时间取决于下列因素:在计算机上从开始运行到结束所需要的时间。运行所需要的时间取决于下列因素:硬件的速度。硬件的速度。与硬件的配置高低有关。与硬件的配置高低有关。书写程序的语言。书写程序的语言。语言的级别越高,其执行效率就越低。语言的级别越高,其执行效率就越低。编译程序所生成目标代码的质量编译程序所生成目标代码的质量。依据依据算法所选用的策略算法所选用的策略。问题的规模问题的规模。一般情况下,处理的数据量越大,执行的时间相对也越长。一般情况下,处理的数据量越大,执行的时间相对也越长。2022年7月28日19通常的做法是:不考虑不确定的情况,而以算法中简单操作重复执
展开阅读全文