版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1引论1第1引论1数据结构研究什电子计算机的主要用数据结构研究什电子计算机的主要用途主要用于数值计算2数值计算问题例X只,兔脚Y鸡兔同笼,鸡例预计人口增长情况,现有人口数值计算问题例X只,兔脚Y鸡兔同笼,鸡例预计人口增长情况,现有人口13亿,要在5控制在153数据结构研究什电子计算机的主要用数据结构研究什电子计算机的主要用途主要用于数值计算4非数值计算问题例电话号码表的结构和存储方式决定了查找(算法)非数值计算问题例电话号码表的结构和存储方式决定了查找(算法)的效率。5非数值计算问题例田径赛的时间安排问题(无向图的着色问题:有五人报名参加比赛(如下表所示)使得在尽可能短的时间内完成非数值计算问题例田径赛的时间安排问题(无向图的着色问题:有五人报名参加比赛(如下表所示)使得在尽可能短的时间内完成比赛6姓名项目项目项目丁一跳高跳远 马二 铅球张三标抢 李四铅球 跳高王五跳远 非数值计算问题----(1)100E200F跳A非数值计算问题----(1)100E200F跳A跳B标C铅D某选手比赛的项目必定有边相连(不能同时比赛)7BAFECD8123E4F姓项目项目项目丁ABE马CD张CBAFECD8123E4F姓项目项目项目丁ABE马CD张CEF李DFA王BF例人机对树9例人机对树9非数值计算问题求解非数值计算问题主要考虑的是及相应的算法即:首先要非数值计算问题求解非数值计算问题主要考虑的是及相应的算法即:首先要因此,可以认为:数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作的学科。基本概念和术基本概念和术数据定义:数据是所有能被输入计算机,且能被计算机程序加工处理的各种符号集合。数据定义:数据是所有能被输入计算机,且能被计算机程序加工处理的各种符号集合。数据元素定义:数据元素是组成数据的基本单中加工处理的基本单位。例如,是计算机程数据数据元素定义:数据元素是组成数据的基本单中加工处理的基本单位。例如,是计算机程数据女河北数据对象定义:数据对象是性质相同的数据数据对象定义:数据对象是性质相同的数据元素的集合,是数的一个子集整数集合字符集合数据结构数据结构反映了数据的数据结构数据结构反映了数据的内部构成,即数据由哪些成分数据成,以什么方式构成,呈什么结构。数据结构是数据存在的形式。简单地说,数据结构就是相互之间存在一种或多种特定关系的数据元素的集合。定义:按某种逻辑关系组织起来的一批数据(或称带结构的数据元素的集合)应用计算机语言并按一定的存储表示方式把它们存储在计算机的存储器中,并在其上定义了一个运算的集合。数据元素间抽象化的相互关系(简称为数据结构)数据元素间抽象化的相互关系(简称为数据结构) 存储结构(物理结构运算(算法()顺序存储:借助元素在存储器中的相对位置来表示数据元素间的逻辑关系。(2)链式存储:借助指示元素存储地址的指针()顺序存储:借助元素在存储器中的相对位置来表示数据元素间的逻辑关系。(2)链式存储:借助指示元素存储地址的指针LLoc(元素i)=Lo+(i-元素元素Lo+(i-元素o+(n-LLoc(元素i)=Lo+(i-元素元素Lo+(i-元素o+(n-元素hh∧元素∧元素元素元素hh∧元素∧元素元素元素()数据的逻辑结构、存储结构和数据的运算(算法)构成了数据结构三个方面的含义。(2)构,加之设计一个好()数据的逻辑结构、存储结构和数据的运算(算法)构成了数据结构三个方面的含义。(2)构,加之设计一个好的算法。而好的算法在很大程度取决于描述实际问题的数据结构数据类型和抽象数据具有相同数据结数据类型和抽象数据具有相同数据结构的数据属同一类。同一类数据的全称为一个数据类型(DataType)在高级程序设计语言中,数据类型用来说明数据在数据分类中的归属。它是数据的一种属性。C数据类型和抽象数据抽象数据类型(Abstract数据类型和抽象数据抽象数据类型(AbstractDataType简称抽象数据类型定义包括数据组成和对数据的处理AbstractDataTypeAbstractDataType使用抽象数据类型观点,可以使分离,从而能够独立地考虑模块的外部界面,内部算法和数据结构的实现。这也可以使应用程序只要按抽象数据类型的观点统一其调用方式,不管其内部换用其他的任何数据表示方式和运算实现算法,对应用程序都没有影响。这个特征对系统的维护和修改非常有使用抽象数据类型观点,可以使分离,从而能够独立地考虑模块的外部界面,内部算法和数据结构的实现。这也可以使应用程序只要按抽象数据类型的观点统一其调用方式,不管其内部换用其他的任何数据表示方式和运算实现算法,对应用程序都没有影响。这个特征对系统的维护和修改非常有利浮点类型、指针类型等,都可以看作是简单的抽象数据类型。从原则上讲,数据结构课程中讨论的各种表、栈、队列、数据类型和抽象数据抽象数据类型=D上的关D上的操ADT数据对象:数据类型和抽象数据抽象数据类型=D上的关D上的操ADT数据对象:<数据对象的定义数据关系常格基本}ADT例:抽象数据类型ADT{rvoidconstructor(area({例:抽象数据类型ADT{rvoidconstructor(area({}circumference({}ADT}算法和算法分算法(Algorithm):解决某一特算法和算法分算法(Algorithm):解决某一特定问题的具体步骤描述,是指令的有限序列算法的描述:类C语言(介于伪码和C语言之间输入:一个算法有零个或多个输出:一个算法有至少一个(4)ifn>=100do(5)elseoutput(4)ifn>=100do(5)elseoutputrepeat算法和算法分算法(Algorithm):解决某一特算法和算法分算法(Algorithm):解决某一特定问题的具体步骤描述,是指令的有限序列算法的描述:类C语言(介于伪码和C语言之间输入:一个算法有零个或多个输出:一个算法有至少一个算法和算法分程序是算法用某种程算法和算法分程序是算法用某种程序设计语言的具体实程序可以不满足算法的性质(1)例如操作系统,是一个在无限循环中执行的程序,因而不是一个算法。操作系统的各种任务可看成是单独的问题,每一个问题由操作系统中的一个子程序通过特定的算法来实现。该子程序得到输出结果后便终止。算法和算法分评价一个算法主要是看运行算法所需要的计算机资源的量,即算法的复杂性。计算机的资源,最重要的是时间和空间资源。需要的时间资源的量称为时间复杂性(算法和算法分评价一个算法主要是看运行算法所需要的计算机资源的量,即算法的复杂性。计算机的资源,最重要的是时间和空间资源。需要的时间资源的量称为时间复杂性();需要的空间资源的量称为空间复杂性。其中n是问题的规模(输入大小)算法中所有基本操作重复执行的次数之和即为时间复(),为方便计算,假设算法中用到的所有不同的元运算各执行一次所需要的时间都是一个单位时间。算法的时间复通常考虑3Tmax(n)算法的时间复通常考虑3Tmax(n)=max{T(I)|size(I)=nTmin(n)=min{T(I)|size(I)=np(I)T(ITavg(n)size(I算法的时间复以上3法的效率,各有各的局限性,也各有各的用处。实践表明,可操作性最好最有实际价值的是最坏情况下的时间复杂性。本书对算法时间复杂性的分析主要采用最坏情况下的时间复杂性分算法的时间复以上3法的效率,各有各的局限性,也各有各的用处。实践表明,可操作性最好最有实际价值的是最坏情况下的时间复杂性。本书对算法时间复杂性的分析主要采用最坏情况下的时间复杂性分析算法渐近复设T(n)是关于算法A一般来说,当n算法渐近复设T(n)是关于算法A一般来说,当n时,T(n)。对于T(n)t(n,使得当n(T(nt(nT(n0,那么,t(n)是T(n)的渐近表达式,是T(n)在数学上留下的主项。它比T(n)简单例如:当T(n)=2n2+3n+2时t(n)的一个答案是算法渐近复鉴于分析算法复杂性的目的在于比较求解同一问题的2不同算法的效率。而当比较的个算法的渐近复杂性的阶不相同时,只要能确定出各自的阶,就可以判定哪个算法的效率高。即此时的渐近复杂性分析只需关心算法渐近复鉴于分析算法复杂性的目的在于比较求解同一问题的2不同算法的效率。而当比较的个算法的渐近复杂性的阶不相同时,只要能确定出各自的阶,就可以判定哪个算法的效率高。即此时的渐近复杂性分析只需关心的阶即可算法渐近复综上所述,已经给出了简化算法复杂性分析的方法,即只要考察当问题的规模充分大时,算法复杂性在渐近意义下的阶。为此,需引入以下渐近复杂性的记号。设f(n)和g(n)如果存在正的常数算法渐近复综上所述,已经给出了简化算法复杂性分析的方法,即只要考察当问题的规模充分大时,算法复杂性在渐近意义下的阶。为此,需引入以下渐近复杂性的记号。设f(n)和g(n)如果存在正的常数c和自然数n0,使得当n≧n0f(n)≦cg(n),则称函数f(n)当n充分大时上有界,且g(n)是它一个上界,记为渐近分析的记在下面的讨论中,对所有n,f(n0,g(n渐近分析的记在下面的讨论中,对所有n,f(n0,g(n0(1)渐近上界记号O(g(nf(n|存在正常数c和n0使得对所有n0f(n)cg(n)(2)渐近下界记号(g(nf(n|存在正常数c和n0使得对所有n0cg(n)f(n)(3)非紧上界记号o(g(nf(n|对于任何正常数c>0(3)非紧上界记号o(g(nf(n|对于任何正常数c>0,存在正数和n00使得对所有nn0有:0f(n)<cg(n)}等价于f(ng(n)0(4)非紧下界记号(g(nf(n|对于任何正常数c>0,存在正数和n00使得对所有nn0有:0cg(n)<f(n)}等价于f(ng(n)f(n)g(n)o(5)紧渐近界记号(g(n(5)紧渐近界记号(g(nf(n|存在正常数c1,c2和n0使得对所有nn0有:c1g(n)f(n)c2g(n)}渐近分析记号在等式和不等式中的f(n(渐近分析记号在等式和不等式中的f(n(g(n))的确切意义是:f(n(g(n))例如:2n23n12n2(n2n2+3n+1=2n2+f(n),其中f(n)是(n)中某个函数等式和不等式中渐近记号O,o,和渐近分析中函数比f(n)=O(g(n))渐近分析中函数比f(n)=O(g(n))af(n)=(g(n))af(n)=(g(n))a=f(n)=o(g(n))a<f(n)=(g(n))a>算法分析中常见的复杂性算法分析中常见的复杂性n0101121224842483845n0101121224842483845算法分析的基本法(1)forwhile算法分析的基本法(1)forwhile循环体内计算时间*循环次数(2)嵌套循循环体内计算时间*所有循环次数(3)顺序语各语句计算时间相加(4)if-elseif语句计算时间和else语句计算时间的较大者语句频度:例:++x;语句频度为1,即时间复杂度为O(1)例:s=0;语句频度为2,其时间复杂度仍为语句频度:例:++x;语句频度为1,即时间复杂度为O(1)例:s=0;语句频度为2,其时间复杂度仍为O(1),即常量阶语句频度:例:两个n阶矩阵相算法12345对应的语句语句频度:例:两个n阶矩阵相算法12345对应的语句for(i=0;i<for{for(k=0;k<} 总执行次数:Tn=2n+2nTnOn3例1C.O(n2nD.O(log例1C.O(n2nD.O(log2用C语言描述数据结构与变量和指用C语言描述数据结构与变量和指函数与参数传结动态存储分变量和指变量名:变量和指变量名:标识变量的符生命期:执行程序期间变量存在的作用域:程序中变量被引用的语句变量和指变量和指函数定义包括个部分:函数名、形参、返回类型和函数体。函数的返回值通过函数体中的un语句返回,不需要返回值的函数类型为函数定义包括个部分:函数名、形参、返回类型和函数体。函数的返回值通过函数体中的un语句返回,不需要返回值的函数类型为d调用函数时传递给形参的实参必须和形参在类型、个数、顺序上保持一致。值传地址传递(需将形参声明为指针类型C{数据成员列表C{数据成员列表指向结构的指针值是相应的结构变量所占据的内存空间的首地址。例如,如果已经定义了一个结构ststructst//定义一指向结构的指针值是相应的结构变量所占据的内存空间的首地址。例如,如果已经定义了一个结构ststructst//定义一个指向结构st用typedef关键字typedef例如,下面是用typedefRectangletypedefstructrecnode用typedef关键字typedef例如,下面是用typedefRectangletypedefstructrecnode*Rectangletypedefstructrecnode{int//(x,y)是矩形左下角点的坐对于结构类型的变量用圆点运算符“.”访问结构变量的定义为指向结构的指针类型的变量用箭头运算符“对于结构类型的变量用圆点运算符“.”访问结构变量的定义为指向结构的指针类型的变量用箭头运算符“访问结构变量的数据成员。例Recnoderr;y=%d\n”,R-R-Recnoderr;y=%d\n”,R-R-如下面的函数用于说明一个Rectanle型变量并对其初始化。RectangleRecInit({R-如下面的函数用于说明一个Rectanle型变量并对其初始化。RectangleRecInit({R-returnR-R-R-}动态存储分配函数malloc()和free(动态存储分配函数malloc()和free(malloc(其作用是在内存的动态存储区中分配一个长度为的连续空间此函数是一个指针型函数,返回的指针指
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年社区城乡居民养老保险政策知识竞赛
- 2026年环境工程污水处理方法模拟
- 2026年经济预测与市场决策分析题
- 2026年饲料系统版饲料标签知识试题
- 2026年刑事诉讼法解释及未成年人刑事案件诉讼程序特别规定实务测试题
- 《商品学基础》(附微课 第2版)教案 第一章 商品概述
- 2026年及未来5年市场数据中国育婴师行业市场调研及未来发展趋势预测报告
- 2026年及未来5年市场数据中国国债期货行业发展监测及投资前景展望报告
- 2026年及未来5年市场数据中国南宁市物业管理行业市场全景评估及投资前景展望报告
- 四川达州新世纪学校2026届中考适应性考试英语试题含答案
- 2026内蒙古呼和浩特土默特左旗专职网格员储备库建设招录储备人才52人考试模拟试题及答案解析
- (二模)上饶市2026届高三年级第二次高考模拟考试英语试卷(含官方答案)
- 立春二部合唱简谱
- 做账实操-污水处理成本核算实例
- 慢性病知识讲座课件
- 文书档案归档和规范专题培训课件
- 2025年轻型民用无人驾驶航空器安全操控(多旋翼)理论备考试题及答案
- 故宫角楼介绍
- 医院医护人员心理健康与调适
- 中山市2024广东中山市文化广电旅游局所属事业单位(中山纪念图书馆)第一期招聘事笔试历年参考题库典型考点附带答案详解(3卷合一)
- 《有机化学》第六版
评论
0/150
提交评论