ImageVerifierCode 换一换
格式:PPT , 页数:23 ,大小:800.50KB ,
资源ID:10295095      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/10295095.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(c++数据结构第01章.ppt)为本站上传会员【精****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

c++数据结构第01章.ppt

1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第1章 绪论,本章学习内容:,1.1 什么是数据结构,1.2 算法描述,1.3 算法分析,1,1.1 什么是数据结构,1.1.1 数据结构示例,学号,姓名,性别,籍贯,电话,通讯地址,01,张三,男,长沙,8639000,麓山南路,327,号,02,李四,男,北京,23456789,学院路,435,号,03,王五,女,广州,30472589,天河路,478,号,04,赵六,男,上海,41237568,南京路,1563,号,05,钱七,女,南京,5013472,南京大学,06,刘八,女,武汉,615437

2、26,武汉大学,07,朱九,男,昆明,4089651,云南大学,08,孙十,女,杭州,6154372,西湖路,635,号,【例1-1】给出一张学生数据表,如下:,2,在学生表中,一行为一个学生信息,代表一个学生数据,一列为一个属性,整个二维表格形成学生数据的一个线性序列,每个学生排列的位置有先后次序,它们之间形成一种线性关系,是一种典型的数据结构(线性结构),我们将它称为线性表。,【例1-2】描述一个磁盘的目录及文件结构,包含一个根目录,若干个一级子目录(文件夹),每个一级子目录中又包含若干个二级子目录(子文件夹),如下所示:,在此种结构中,数据之间呈现一对多的非线性关系,也是我们常用的一种数

3、据结构(非线性结构),我们将它称为树形结构。,3,4数据类型(data type),数据是一组性质相同的值的集合以及定义于这个值集合上的一组操作的总称。,例如,高级语言中用到的整数数据类型,是指由-3276832767中的整数数值构成的集合及一组操作(加、减、乘、除、乘方等)的总称。,5抽象数据类型(Abstract Data Types),抽象数据类型通常是指由用户定义,用以表示应用问题的数据模型,抽象数据类型由基本数据类型组成,并包括一组相关的操作。抽象数据类型有些类似于C/C+语言中的struct类型和pascal语言中的record类型,但它增加了相关的操作。,在本书中,描述一种抽象数

4、据类型将采用如下书写格式:,ADT is,Data:,Operation:,END,6,【例1-4】给出自然数(Natural Number)的抽象数据类型定义。,ADT Natural Number is,Data:,一个整数的有序子集合,它开始于0,终止于机器能表示的最大整数(MAXINT)。,Operation:,对于所有x,y Natural Number,定义如下操作:,add(x,y)求XY,sub(x,y)求XY,mul(x,y)求XY,div(x,y)求XY,equal(x,y)判断X,Y是否相等,end,7,1.1.3 数据结构,1数据结构(data structure),数

5、据结构是指相互之间存在一种或多种特定关系的数据元素所组成的集合。具体来说,数据结构包含三个方面的内容,即数据的逻辑结构、数据的存储结构和对数据所施加的运算。这三个方面的关系为:,(1)数据的逻辑结构独立于计算机,是数据本身所固有的。,(2)存储结构是逻辑结构在计算机存储器中的映像,必须依赖于计算机。,(3)运算是指所施加的一组操作总称。运算的定义直接依赖于逻辑结构,但运算的实现必依赖于存储结构。,比如,例1-1提到的学生数据表,除了有8个学生的数据外,还存在着一对一的线性关系,例1-2提到的磁盘目录及文件结构,除包含文件数据外,还存在着目录之间一对多的非线性关系,例1-3提到的大学校园网,除包

6、含站点数据外,还存在着站点间的多对多的非线性关系。,8,2从逻辑结构划分数据结构,数据结构从逻辑结构划分为:,(1)线性结构,元素之间为一对一的线性关系,第一个元素无直接前驱,最后一个元素无直接后继,其余元素都有一个直接前驱和直接后继。,(2)非线性结构,元素之间为一对多或多对多的非线性关系,每个元素有多个直接前驱或多个直接后继。,(3)集合结构,元素之间无任何关系,元素的排列无任何顺序。,3从存储结构划分数据结构,数据结构从存储结构划分为:,(1)顺序存储(向量存储),所有元素存放在一片连续的存储单元中,逻辑上相邻的元素存放到计算机内存中仍然相邻。,9,(2)链式存储,所有元素存放在可以不连

7、续的存储单元中,但元素之间的关系可以通过地址确定,逻辑上相邻的元素存放到计算机内存后不一定是相邻的。,4数据结构的抽象描述,数据结构可用二元组D=(K,R)的形式来描述。其中,K=a1,a2,an为元素集合,R=r1,r2,rm为关系的集合。,【例1-5】设有一个线性表(a1,a2,a3,a4,a5),它的抽象描述可表示为D=(K,R),其中K=a1,a2,a3,a4,a5,R=,,则它的逻辑结构的图形描述如下。,(3)索引存储,使用该方法存放元素的同时,还建立附加的索引表,索引表中的每一项称为索引项,索引项的一般形式是:(关键字,地址),其中的关键字是能惟一标识一个结点的那些数据项。,(4)

8、散列存储,通过构造散列函数,用函数的值来确定元素存放的地址,10,【例1-6】设一个数据结构的抽象描述为D=(K,R),其中K=a,b,c,d,e,f,g,h,r=,,则它的逻辑结构的图形描述如下,。,【例1-7】设一个数据结构的抽象描述为D=(K,R),其中K=1,2,3,4,而R=(1,2),(1,3),(1,4),(2,3),(2,4),(3,4),则它的逻辑结构的图形描述如下。,11,1.2 算法描述,1.2.1 基本概念,1算法(algorithm),通俗地讲,算法就是一种解题的方法。更严格地说,算法是由若干条指令组成的有穷序列,它必须满足下述条件(也称为算法的五大特性):,(1)输

9、入:具有0个或多个输入的外界量(算法开始前的初始量)。,(2)输出:至少产生一个输出,它们是算法执行完后的结果。,(3)有穷性:每条指令的执行次数必须是有限的。,(4)确定性:每条指令的含义都必须明确,无二义性。,(5)可行性:每条指令的执行时间都是有限的。,12,2算法和程序的关系,算法的含义与程序十分相似,但二者是有区别的。一个程序不一定满足有穷性(死循环),另外,程序中的指令必须是机器可执行的,而算法中的指令则无此限制。一个算法若用计算机语言来书写,则它就可以是一个程序。,1.2.2 算法描述,1用流程图描述算法,一个算法可以用流程图的方式来描述,输入输出、判断、处理分别用不同的框图表示

10、用箭头表示流程的流向。这是一种描述算法的较好方法,目前在一些高级语言程序设计中仍然采用。,2用自然语言描述算法,用我们日常生活中的自然语言(可以是中文形式,也可以是英文形式)也可以描述算法。,13,3用其他方式描述算法,我们还可以用数学语言或约定的符号语言来描述算法。,4用C+描述算法,在本教材中,我们将采用C+或类C+来描述算法。,用C+描述算法遵循如下规则:,(1)所有算法的描述都用C+中的函数形式,函数类型 函数名(形参及类型说明),函数语句部分,return(表达式值);,(2)函数中的形式参数有两种传值方式,若为一般变量名,则为单向传值参数,若在变量前面增加“&”符号,则为双向传地

11、址参数。,例如有一个函数为void swap(&i,&j,k),则i,j为双向传地址参数,k为单向传值参数。,14,(3)函数的说明部分与函数的实现部分分离,在C+中,用函数来描述算法时,为使之与面象对象的程序设计相匹配,一般将函数的说明部分与函数的实现部分分离开来。,(4)输入函数,C+中的输入函数调用为:cin变量名。,(5)输出函数,C+中的输出函数调用为:cout变量名。,(6)C+中的类,C+对于面向对象程序设计的支持,核心部分就是类的定义。类的定义体现了抽象数据类型的思想,可以支持说明与实现的分离,将抽象数据类型的实现封装在类的内部,使之达到信息隐蔽的目的。,(7)public 说

12、明,对于C+的类,类成员可以用public 声明,表示这些东西是公有的,可以在此类及其他类中使用。,15,(8)private 说明,对于C+类,类成员可以用private声明,表示这些东西是私有的,只能在本类中使用。,(9)protected说明,对于C+类,类成员可以用protected声明,表示这部分是受保护的,只能在本类及它的所有派生类中使用。,(10)C+的作用域,在C+中,每个变量都有一个作用域。在函数内声明的变量,仅能在该函数内部有效,在类中声明的变量,可以在该类内部有效。在整个程序中都能使用的变量,为全局变量,否则称为局部变量。若一个全局变量与一个局部变量同名,则该范围内全局变

13、量不起作用。若要使之起作用,可以使用域操作符来实现。,(11)函数名重载,C+中允件多个函数取相同的函数名,但形式参数或返回类型可以不同。,16,(12)友元函数,在C+的类声明中,可以使用保留字friend定义友元函数,使用友元函数可以在一个类中访问另一个类中的私有成员(private)和被保护成员(protected)。,(13)内联(inline)函数,在一个函数定义前加上inline前缀就成为内联函数。使用内联函数可以减少函数调用和参数传递的系统开销。,17,1.3 算法分析,求解同一个问题,可以有许多不同的算法,那么怎样来衡量这些算法的优劣呢?首要的条件是选用的算法必须是正确的,其次

14、考虑如下三点:,(1)执行算法所耗费的时间。,(2)执行算法所占用的内存开销(主要考虑占用的辅助存储空间)。,(3)算法应易于理解,易于编码,易于调试等。,18,1.3.1 时间复杂度,1时间频度,一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试(因为,计算机的运行速度与CPU等因素有关。同一算法在不同的计算机上运行的时间是不同的),只需知道在相同的条件下,哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比,哪个算法中语句执行次数多,它花费的时间就多。一个算法中的语句执行

15、次数称为语句频度或时间频度,记为T(n)。,【例1-8】求下列算法段的语句频度。,for(i=1;i=n;i+),for(j=1;j=i;j+),x=x+1;,分析:该算法为一个二重循环,执行次数为内、外循环次数相乘,但内循环次数不固定,与外循环有关,因此,时间频度T(n)=1+2+3+n=。,19,2时间复杂度,在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但有时我们想知道它变化时呈现什么规律,为此,引入时间复杂度概念。,设T(n)的一个辅助函数为g(n),定义为当n大于等于某一足够大的正整数n,0,时,存在两个正的常数A和B(其中AB),使得A B

16、均成立,或有 =A,(其中A为常数),则称g(n)是T(n)的同数量级函数。把T(n)表示成数量级的形式为:T(n)=(g(n),其中大写字母为英文Order(即数量级)一词的第一个字母。,例如,若T(n)=,则有 =,故它的时间复杂度为(n,2,),即(n)与n,2,数量级相同。,20,【例1-9】分析下列算法段的时间频度及时间复杂度。,for (i=1;i=n;i+),for (j=1;j=i;j+),for(k=1;k=j;k+),x=i+j-k;,分析算法规律可知时间频度T(n)=1+(1+2)+(1+2+3)+(1+2+3+n),=,=+,=+,由于有 =,故时间复杂度为(n,3,)

17、21,在各种不同算法中,若算法中语句执行次数为一个常数,则时间复杂度为O(1),另外,在时间频度不相同时,时间复杂度有可能相同,如T(n)=n,2,+3n+4与T(n)=4n,2,+2n+1它们的时间频度不同,但时间复杂度相同,都为O(n,2,)。,按数量级递增排列,常见的时间 复杂度有:常数阶O(1),对数阶O(log,2,n),线性阶O(n),线性对数阶O(nlog,2,n),平方阶O(n,2,),立方阶O(n,3,),k次方阶O(n,k,),指数阶O(2,n,),O(3,n,),O(k,n,),阶乘阶O(n!)等。,随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率降低。,22,1.3.2 空间复杂度,1空间频度,一个算法在执行时所占有的内存开销,称为空间频度,但我们一般是讨论算法占用的辅助存储空间。讨论方法与时间频度类似,不再赘述。,2空间复杂度,与时间复杂度类似,空间复杂度是指算法在计算机内执行时所占用的内存开销规模。我们一般所讨论的是除正常占用内存开销外的辅助存储单元规模。讨论方法与时间复杂度类似,不再赘述。,23,

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服