数据结构课件(第一章).ppt

上传人:max****ui 文档编号:11543665 上传时间:2020-04-28 格式:PPT 页数:58 大小:260KB
返回 下载 相关 举报
数据结构课件(第一章).ppt_第1页
第1页 / 共58页
数据结构课件(第一章).ppt_第2页
第2页 / 共58页
数据结构课件(第一章).ppt_第3页
第3页 / 共58页
点击查看更多>>
资源描述
数据结构课程地位,数据结构与其它课程关系图:,参考书籍:,数据结构(C语言版)严蔚敏吴伟民清华大学出版社数据结构题集(C语言版)严蔚敏清华大学出版社数据结构学习指导与典型题解朱战立西安交通大学出版社数据结构与程序设计C语言描述(第2版)(DataStructure高级语言中,给出更高一级的数据抽象,如整型、实型、字符型等;还可以进一步定义更高级的数据抽象,如各种表、队、栈、树、图、窗口、管理器等复杂的抽象数据类型。,return,抽象数据类型(AbstractDataType),定义:抽象数据类型(简称ADT)是指基于一类逻辑关系的数据类型以及定义在这个类型之上的一组操作。一个抽象数据类型确定了一个模型,但将模型的实现细节隐藏起来;它定义了一组运算,但将运算的实现过程隐藏起来。,抽象数据类型(AbstractDataType),线性表的抽象数据类型的描述:ADTLinear_list数据元素所有ai属于同一数据对象,i=1,2,n,n=0;逻辑结构所有数据元素ai(i=1,2,n-1)存在次序关系,a1无前趋,an无后继;操作设L为Linear_listInitial(L)初始化空线性表;Length(L)求线性表的表长;Get(L,i)取线性表的第i个元素;Insert(L,i,b)在线性表的第i个位置插入元素b;Delete(L,i)删除线性表的第i个元素;,return,ADT的表示与实现,ADT的定义:ADT数据对象:结构关系:基本操作:ADT基本操作的定义格式为:(参数表)操作前提:操作结果:,ADT的表示与实现,关于参数传递参数表中的参数有值参和变参两种。用标准C语言表示和实现ADT描述时,主要有两个方面:(1)通过结构体将int、float等固有类型组合到一起,构成一个结构类型,再用typedef为该类型或该类型指针重新起一个名字。(2)用C语言函数实现各操作。基本操作包括插入、删除、更新、查找、排序等。,return,1.2数据结构的内容,逻辑结构存储结构运算集合,返回,逻辑结构,定义:数据的逻辑结构是指数据元素之间逻辑关系描述。形式化描述:Data_Structure=(D,R)其中D是数据元素的有限集,R是D上关系的有限集。四类基本的结构集合结构、线性结构、树型结构、图状结构。,集合结构,定义:结构中的数据元素之间除了同属于一个集合的关系外,无任何其它关系。集合,线性结构,定义:结构中的数据元素之间存在着一对一的线性关系。线性表,树型结构,定义:结构中的数据元素之间存在着一对多的层次关系。,树,图状结构或网状结构,定义:结构中的数据元素之间存在着多对多的任意关系。,图,逻辑结构,综上所述,数据的逻辑结构可概括为:,return,逻辑结构,非线性结构树、图,线性结构线性表、栈、队字符串、数组、广义表,存储结构,定义:存储结构(又称物理结构)是逻辑结构在计算机中存储映象,是逻辑结构在计算机中的实现,它包括数据元素的表示和关系的表示。形式化描述:D要存入机器中,建立一从D的数据元素到存储空间M单元映象S,DM,即对于每一个d,dD,都有唯一的zM使S(D)=Z,同时这个映象必须明显或隐含地体现关系R。,存储结构,逻辑结构与存储结构的关系为:存储结构是逻辑关系的映象与元素本身映象,是数据结构的实现;逻辑结构是数据结构的抽象。数据元素之间关系在计算机中的表示方法:顺序映象(顺序存储结构)非顺序映象(非顺序存储结构),return,运算集合,例如工资表:,数据结构的内容,数据结构的内容可归纳为三个部分:逻辑结构、存储结构和运算集合。按某种逻辑关系组织起来的一批数据,按一定的映象方式把它存放在计算机存贮器中,并在这些数据上定义了一个运算的集合,就叫做数据结构。,return,1.3算法,算法(Algorithm)定义算法的特性算法设计的要求,返回,算法(Algorithm)定义,定义:Algorithmisafinitesetofruleswhichgivesasequenceofoperationforsolvingaspecifictypeofproblem.算法是规则的有限集合,是为解决特定问题而规定的一系列操作。,return,算法的特性,1.有限性:有限步骤之内正常结束,不能形成无穷循环2.确定性:算法中的每一个步骤必须有确定含义,无二义性得以实现。3.输入:有多个或0个输入4.输出:至少有一个或多个输出。5.可行性:原则上能精确进行,操作可通过已实现基本运算执行有限次而完成。,return,算法设计的要求,算法特征:算法的正确性可读性健壮性高效率和低存储量,求n个数的最大值,算法如下:max=0;for(i=1;imax)max=x;,return,1.4算法描述的工具,概述:算法+数据结构=程序算法、语言、程序的关系设计实现算法过程步骤类描述算法的语言选择,返回,算法、语言、程序的关系,1.算法:描述了数据对象的元素之间的关系(包括数据逻辑关系、存贮关系描述)。2.描述算法的工具:算法可用自然语言、框图或高级程序设计语言进行描述。3.程序是算法在计算机中的实现。,return,设计实现算法过程步骤,1.找出与求解有关的数据元素之间的关系2.确定在某一数据对象上所施加运算3.考虑数据元素的存储表示4.选择描述算法的语言5.设计实现求解的算法,并用程序语言加以描述。,return,类描述算法的语言选择,类语言:类语言是接近于高级语言而又不是严格的高级语言,具有高级语言的一般语句设施,撇掉语言中的细节,以便把注意力主要集中在算法处理步骤本身的描述上。,对C语言作以下描述:,1.预定义常量和类型#defineTRUE1#defineFALSE0#defineMAXSIZE100#defineOK1#defineERROR0,对C语言作以下描述:,2.函数的表示形式:数据类型函数名(形式参数及说明)内部数据说明;执行语句组;/*函数名*/,对C语言作以下描述:,3.赋值语句对C语言作以下描述:(1)简单赋值1)变量名=表达式2)变量+,3)变量-,(2)串联赋值变量1=变量2=变量3=变量k=表达式,对C语言作以下描述:,(3)条件赋值变量名=条件表达式?表达式1:表达式24.条件选择语句if()语句;if()语句1;else语句2;,对C语言作以下描述:,情况语句switch()case判断值1:语句组1;break;case判断值2:语句组2;break;case判断值n:语句组n;break;default:语句组;break;,对C语言作以下描述:,5.循环语句for语句for(;)循环体语句;,对C语言作以下描述:,while语句while()循环体语句;dowhile语句do循环体语句while(),对C语言作以下描述:,6.输入、输出函数7.其它一些语句8.注释语句9.一些基本的函数,return,1.5对算法作性能评价,评价算法的标准:评价一个算法主要看这个算法所占用机器资源的多少,而这些资源中时间代价与空间代价是两个主要的方面,通常是以算法执行所需的机器时间和所占用的存储空间来判断一个算法的优劣。性能评价有关数量关系计算,返回,性能评价,定义:对问题规模与该算法在运行时所占的空间S与所耗费的时间T给出一个数量关系的评价。问题规模N对不同的问题其含义不同:对矩阵是阶数;对多项式运算是多项式项数;对图是顶点个数;对集合运算是集合中元素个数。,return,有关数量关系计算,数量关系评价体现在时间算法在机器中所耗费时间。数量关系评价体现在空间算法在机器中所占存储量。关于算法执行时间语句频度算法的时间复杂度数据结构中常用的时间复杂度频率计数最坏时间复杂度算法的空间复杂度,return,关于算法执行时间,定义:一个算法的执行时间大致上等于其所有语句执行时间的总和,对于语句的执行时间是指该条语句的执行次数和执行一次所需时间的乘积。分析:不是针对实际执行时间的精确地算出算法执行具体时间,而是针对算法中语句的执行次数做出估计,从中得到算法执行时间的信息。,return,语句频度,定义:语句频度是指该语句在一个算法中重复执行的次数。例如:两个矩阵相乘算法语句对应的语句频度1for(i=0;in;i+)n2for(j=0;jn;j+)n23cij=0;n24for(k=0;kn;k+)n3cij=cij+aik*bkj;n3总执行次数:T(n)=2n3+2n2+n,return,算法的时间复杂度,算法的时间复杂度,即是算法的时间量度记做:T(n)=O(f(n)例如给出X=X+1(1)x=x+1;时间复杂度为O(1),称为常量阶;(2)for(i=1;i=n;i+)x=x+1;时间复杂度为O(n),称为线性阶;,return,常用的时间复杂度频率计数,常用的时间复杂度频率计数数据结构中常用的时间复杂度频率计数有7个:O(1)常数型O(n)线性型O(n2)平方型O(n3)立方型O(2n)指数型O(log2n)对数型O(nlog2n)二维型按时间复杂度由小到大排列的频率表:P17,return,最坏时间复杂度,定义:讨论算法在最坏情况下的时间复杂度,即分析最坏情况下以估计出算法执行时间的上界。例如冒泡排序算法,最坏时间复杂度,voidbubble(inta,intlength)inti=0,j,temp;intchange;dochange=false;for(j=1;jaj+1)temp=aj;aj=aj+1;aj+1=temp;change=true;i=i+1;while(ilength|change=true),return,算法的空间复杂度,定义:用空间复杂度作为算法所需存储空间的量度,记做:S(n)=O(f(n)。,return,1.6关于学习数据结构,数据结构课程地位数据结构课程学习特点关于本书内容编写说明,返回,数据结构课程学习特点,教学目标:学会分析数据对象的特征,掌握数据组织方法和计算机的表示方法,以便为应用所涉及数据选择适当的逻辑结构、存储结构及相应算法,初步掌握算法时间空间分析的技巧,培养良好的程序设计技能。学习方法:学习数据结构,必须经过大量的实践,在实践中体会构造性思维方法,掌握数据组织与程序设计的技术。,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!