计算机2级C公共基础知识.ppt

上传人:牧羊曲112 文档编号:6201583 上传时间:2023-10-04 格式:PPT 页数:268 大小:9.04MB
返回 下载 相关 举报
计算机2级C公共基础知识.ppt_第1页
第1页 / 共268页
计算机2级C公共基础知识.ppt_第2页
第2页 / 共268页
计算机2级C公共基础知识.ppt_第3页
第3页 / 共268页
计算机2级C公共基础知识.ppt_第4页
第4页 / 共268页
计算机2级C公共基础知识.ppt_第5页
第5页 / 共268页
点击查看更多>>
资源描述

《计算机2级C公共基础知识.ppt》由会员分享,可在线阅读,更多相关《计算机2级C公共基础知识.ppt(268页珍藏版)》请在三一办公上搜索。

1、计算机等级考试公共基础知识,温俊香,第2页,计算机二级考试公共基础知识大纲,数据结构与算法 程序设计基础 软件工程基础 数据库设计基础,这四个方面在试卷中出现的情况是:选择题10个(20分),填空题5个(10分),总分值占到了试卷卷面分的30,是一个不小的比例。,第3页,计算机二级考试公共基础知识试卷分析,第4页,算法 算法的基本概念 2.算法复杂度的概念和意义,一、基本数据结构与算法,数据结构 数据结构的概念 线性表 栈和队列 树与二叉树 查找技术 排序技术,对于等级考试,这个部分的考核重点主要在算法和数据结构的基本概念、二叉树(遍历、结点),还有排序和查找考试中也经常会涉及到。,第5页,算

2、法的定义对解题方案准确而完整的描述称为算法。,算法是程序设计的核心,算法的基本概念,算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗点说,就是计算机解题的过程(计算的方法)。在这个过程中,无论是形成解题思路(推理实现的算法)还是编写程序(操作实现的算法),都是在实施某种算法。,例:n个数从大到小进行排序。有多种排序方法,常用的有冒泡排序、选择排序等。,算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。,讲课说课,第6页,2.算法的基本特征一个算法应该具有以下五个重要的特征:,有穷性 确定性 输入 输出 可行性,拥有足够的情报,第7页,算法与计算机程序 算法_是一组

3、逻辑步骤 程序用计算机语言描述的算法,3.算法的表示,INPUT rS=3.14*r*rPTINT S,问题:输入园的半径,计算园的面积,一个算法的表示需要使用一些语言形式。传统的算法-图形法,如“流程图”和N-S图目前常用的方法-使用伪码描述算法。,第8页,冒泡排序的方法:1.扫描整个线性表,逐次对相邻的两个元素进行比较,若为逆序,则交换;第一趟扫描的结果使最大的元素排到表的最后;2.除最后一个元素,对剩余的元素重复上述过程,将次大的数排到表的倒数第二个位置;3.重复上述过程;对于长度为n的线性表,冒泡排序需要对表扫描n-1遍。,算法举例:n个数排序,第9页,4.算法的两个基本要素:,基本运

4、算和操作 算术运算 关系运算 逻辑运算 数据传输,控制结构 顺序 选择 循环,一是对数据对象的运算和操作;二是算法的控制结构。,算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法,第10页,5.算法的复杂度 评价一个算法优劣的主要标准是算法的执行效率和存储需求:时间复杂度:执行这个算法所需要的计算工作量一般可以用算法在执行过程中所需基本运算的执行次数来度量计算工作量 空间复杂度:执行这个算法所需要的内存空间 算法在执行过程中临时占用的存储空间 时间复杂度它大致等于计算机执行一种简单操作所需的平均时间与算法中进行简单操作的次数的乘积。一个算法在计算机存储器上所占用的存储空间,包括

5、存储算法本身所占用的存储空间、算法中的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个部分,第11页,(1)在计算机中,算法是指_。A.查询方法 B.加工方法 C.解题方案的准确而完整的描述 D.排序方法(2)下列叙述中正确的是(07年4月)A)算法的效率只与问题的规模有关,而与数据的存储结构无关B)算法的时间复杂度是指执行算法所需要的计算工作量C)数据的逻辑结构与存储结构是一一对应的D)算法的时间复杂度与空间复杂度一定相关(3)算法的有穷性是指(08年4月)A)算法程序的运行时间是有限的 B)算法程序所处理的数据量是有限的 C)算法程序的长度是有限的 D)算法只能被有限

6、的用户使用,(c),(B),算法习题:,(A),第12页,(4)算法的时问复杂度是指(2010年3月)A)算法的执行时间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的基本运算次数(5)算法的空间复杂度是指(09年9月)A)算法在执行过程中所需要的计算机存储空间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的临时工作单元数(6)下列叙述中正确的是(06年9月)A)一个算法的空间复杂度大,则其时间复杂度也必定大B)一个算法的空间复杂度大,则其时间复杂度必定小C)一个算法的时间复杂度大,则其空间复杂度必定小 D)上述三种说法都不对,(

7、D)计算工作量,(A),(D),算法的时间复杂度是指A)执行算法程序所需要的时间 B)算法程序的长度C)算法执行过程中所需要的基本运算次数 D)算法程序中的指令条数算法的基本特征是可行性、确定性、【1】和拥有足够的情报。算法的空间复杂度是指 A)算法程序的长度 B)算法程序中的指令条数 C)算法程序所占的存储空间 D)执行过程中所需要的存储空间在计算机中,算法是指 A)加工方法B)解题方案的准确而完整的描述 C)排序方法D)查询方法,例题讲解,有穷性,算法分析的目的是 A)找出数据结构的合理性 B)找出算法中输入和输出之间的关系 C)分析算法的易懂性和可靠性 D)分析算法的效率以求改进算法的工

8、作量大小和实现算法所需的存储单元多少分别称为算法的【1】。,时间复杂度和空间复杂度,第15页,计算机在进行数据处理时,实际需要处理的数据元素一般有很多,而这些大量的数据元素都需要存放在计算机中,因此,大量的数据元素在计算机中如何组织,以便提高数据处理的效率,并且节省计算机的存储空间,这是进行数据处理的关键问题。,二、数据结构,程序=算法+数据结构,数据结构是指相互有关联的数据元素的集合。一般来说,人们不会同时处理特征完全不同且互相之间没有任何关系的各类数据元素,对于具有不同特征的数据元素总是分别进行处理。一般情况下,在具有相同特征的数据元素集合中,各个数据元素之间存在有某种关系(即联系),这种

9、关系反映了该集合中的数据元素所固有的一种结构。,超市的物品如何存放才好找且节省空间呢?,第16页,二.数据结构,数据结构是指相互有关联的数据元素的集合。数据结构是研究数据和数据之间关系的一门学科,它包括三个方面。(1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;(3)对各种数据结构进行的运算。,第17页,1.逻辑结构 数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构。数据的逻辑结构包含:(1)表示数据元素的信息;(2)表示各数据元素之间的前后件关系。例:1.一年四季的数据结构 B=(D,R)D=春,

10、夏,秋,冬 R=(春,夏),(夏,秋),(秋,冬)2.家庭成员的数据结构 B=(D,R)D=父亲,儿子,女儿 R=(父亲,儿子),(父亲,女儿),春,夏,秋,冬,数据结构的图形表示,第18页,常见的逻辑结构有:线性结构、树形结构和图形结构。,线性结构 结构中的每个元素之间存在一个对一个的关系;树形结构 结构中的每个元素之间存在一个对多个的关系;图形结构或网状结构 结构中的每个元素之间存在多个对多个的关系。其中,树形结构和图形结构统称为非线形结构。数据的逻辑结构可以用二元关系表示,也可以直观地用图形来表示。,第19页,2.存储结构(物理结构)计算机在实际进行数据处理时,被处理的各数据元素总是被存

11、放在计算机的存储空间中,并且,各数据元素在计算机存储空间中的位置与它们的逻辑关系不一定是相同的,而且一般也不可能相同。如:一年四季 家庭成员 计算机存储空间怎样存放?存储结构指数据结构在计算机存储空间中的具体实现。常见的存储结构有:顺序存储结构 链式存储结构 索引存储结构,只抽象地反映数据元素之间的关系的结构,而不管其存储方式的数据结构称为逻辑结构。一种数据结构可以根据需要表示成一种或多种存储结构。,第20页,3.数据的运算 检索 插入 删除 更新 排序,通常,一个数据结构中的元素结点可能是动态变化的。根据需要或在处理过程中,可以在一个数据结构中增加一个新结点(插入运算),也可以删除某个结点(

12、删除运算),除此之外,对数据结构的运算还有查找、分类、合并、分解、复制和修改。在对数据结构的处理过程中,不仅数据结构中结点的个数在动态变化,而且,各数据元素之间的关系也有可能在动态地变化。如:无序表变有序表,数据结构是研究数据和数据之间关系的一门学科,研究以下三方面内容:数据的逻辑结构 数据的存储结构 数据的运算,第21|92页,常见的数据结构,数据结构分类 线性结构与非线性结构两大类型,线性结构:一个非空的数据结构若满足下面的两个条件,则这种数据结构即为线性结构。有且仅有一个根结点;除第一个结点外,每一个结点最多有一个前件;除最后一个结点外,每一个结点最多有一个后件。,常见的线性结构有:线性

13、表、栈、队列、线性链表等,第22|92页,常见的非线性结构有树、二叉树、图等,非线性结构:一个数据结构不是线性结构。,第23页,线性表(Linear List),线性表是由n(n0)个数据元素 a1,a2,ai,an组成的一个有限序列。,简单的线性表,复杂的线性表,记录1 02011001 张三 男,记录2 02011003 李四 女,记录3,记录4,第24页,线性表的顺序存储结构,特点:顺序存储结构把逻辑上相邻的数据元素存储在物理上相邻的存储单元里,顺序存储结构只存储结点的值,不存储结点间的关系,结点间的关系由存储单元的邻接关系来体现。,存储地址,2000,2004,2000+4*(i-1)

14、,2000+4*(n-1),占4个字节,Loa(ai)=Loa(a1)+L*(i-1),第i个数的地址,第一个数的地址,L为该类型数所占的字节,线性表的存储结构,线性表的存储结构有两种:顺序存储结构 链式存储结构,第25页,顺序表的插入运算 顺序表的删除运算,顺序表的插入和删除运算,在线性表顺序存储情况下,要插入或删除一个元素,都会由于数据元素的移动而消耗大量的处理时间,所以这种存储方式对于小线性表或其中数据元素不经常变动的线性表是合适的。,线性表的顺序存储结构称为顺序表。,第26页,插入运算,插入算法的分析:假设线性表中含有n个数据元素,在进行插入操作时,若假定在n+1个位置上插入元素的可能

15、性均等,则平均移动元素的个数为:,第27页,删除运算,删除算法的分析:在进行删除操作时,若假定删除每个元素的可能性均等,则平均移动元素的个数为:,总结:顺序存储结构表示的线性表,在做插入或删除操作时,平均需要移动大约一半的数据元素。当线性表的数据元素量较大,并且经常要对其做插入或删除操作时,这一点需要值得考虑。,第28页,线性表的链式存储结构,线性表的链式存储结构称为线性链表。链式存储结构不要求逻辑上相邻的数据元素物理位置也相邻,而且各数据元素的存储顺序也是任意的。各数据元素的先后关系是由各结点的指针域指示。链式存储结构的每一个存储结点不仅存储结点的值,而且存储结点之间的关系:链式存储结构分为

16、单链表、双向链表、循环链表线性链表不能随机存取,第29页,设线性表为(a1,a2,a3,a4,a5),HEAD,3,线性链表的物理状态,线性表的顺序存储结构,注意:1 2 3 此类编号不代表所在的地址单元的地址编码,线性表的链式存储结构及其插入与删除操作,第30页,单链表,第31页,单链表的插入运算,在P所指向的结点之后插入新的结点,单链表删除运算,要求:删除结点ai。,第32页,循环链表:首尾相接的链表。将最后一个结点的空指针改为指向头结点,从任一结点出发均可找到其它结点。,L,.,带头结点的单链表,L,.,循环单链表,特点:可以从任何一个结点开始访问链表的所有结点.,第33页,双向链表的存

17、储结构 在每个结点中设置两个指针,一个指向后继,一个指向前驱。可直接确定一个结点的前驱和后继结点。可提高效率。,提问:单向链表的缺点是什么?提示:如何寻找结点的直接前趋。双向链表可以克服单链表的单向性的缺点。在双向链表的结点中有两个指针域,其一指向直接后继,另一指向直接前趋。,双向循环链表,第34页,线性表的应用:应用最广的数据结构。.高级语言中的数组;计算机的文件系统;计算机的目录系统;电话号码查询系统(可采用顺序表或单链表结构);各种事务处理(可采用顺序表或单链表结构);,第35页,2.栈和队列,栈和队列是两种特殊的线性表,它们是运算时要受到某些限制的线性表,故也称为限定性的数据结构。栈(

18、Stack)及其基本运算 队列(Queue)及其基本运算 循环队列及其基本运算,第36页,1.栈,栈是限定仅在表尾进行插入或删除操作的线性表。栈顶表尾。栈底表头。空栈不含元素的空表。,进栈,出栈,栈s=(a1,a2,an),后进先出或先进后出(LIFO),第37页,栈的物理存储结构可以用顺序结构,也可以用链表结构。下面讨论顺序存储结构中栈元素的插入和删除运算。顺序栈的进栈和出栈运算 栈的基本运算有三种:入栈、退栈和读栈顶元素,在顺序栈中插入和删除运算不需要移动表中其他数据元素。,第38页,2.栈的顺序存储结构及其基本运算,用顺序存储结构表示的栈:顺序栈用一组连续的存储单元存放自栈底到栈顶的数据

19、元素,一般用一维数组表示,设置一个简单变量top指示栈顶位置,称为针栈顶指,它始终指向待插入元素的位置。,基本运算:压(进)栈:PUSH出栈:POP读栈顶元素:gettop,第39页,例子:,空桟:topbase非空桟:top始终在桟顶元素的后一个位置,桟的元素个数:,top-base,上溢,下溢,第40页,2、队列定义:一种特殊的线性结构,限定只能在表的一端进行插入,在 表的另一端进行删除的线性表。此种结构称为先进先出(FIFO)表。,先进先出后进后出(LIFO),第41页,队列的顺序存储结构及其基本运算,空队列:非空队列:队列元素个数:,rear=front=-1,front始终指向队头元

20、素前一个位置,而rear始终指向队尾元素的位置,rear-front,第42页,队列的物理存储结构可以用顺序结构,也可以用链式结构。顺序队列的运算,栈有三种操作:入栈出栈读栈顶元素队列有三种操作:入队出队读队首元素,例:有入栈元素序列:ABCD,求可能的出栈序列如是队列又是什么情况呢?,第43页,循环队列 把队列的存储空间在逻辑上看作一个环,当R指向存储空间的末端后,就把它重新置于始端。循环队列的运算,进行删除的一端称做队首(front)。队列中进行插入的一端称做队尾(rear),习题:数据结构分为逻辑结构和存储结构,循环队列属于【】结构。(2005年9月),答案:存储结构。,第44页,第45

21、页,上溢,下溢,front=rear队满,front=rear队空,第46页,数据存储结构方面的考题,1:数据的存储结构是指(2005年4月)A)存储在外存中的数据 B)数据所占的存储空间量C)数据在计算机中的顺序存储方式 D)数据的逻辑结构在计算机中的表示2.下列叙述中正确的是(2009年3月)A)栈是“先进先出”的线性表 B)队列是“先进后出”的线性表 C)循环队列是非线性结构 D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构 3.数据结构分为线性结构和非线性结构,带链的队列属于。4.下列数据结构中,属于非线性结构的是A)循环队列 B)带链队列C)二叉树 D)带链栈,答案:D。

22、,答案:D。,答案:线性结构。,答案:c,第47页,5。下列叙述中正确的是()。(2008年9月)A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的 B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构 C)顺序存储结构能存储有序表,链式存储结构不能存储有序表 D)链式存储结构比顺序存储结构节省存储空间,答案:A。,6。下列关于栈的叙述正确的是(2008年4月)A)栈按“先进先出”组织数据 B)栈按“先进后出”组织数据 C)只能在栈底插入数据 D)不能删除数据,答案:B。,7.一个队列的初始状态为空。现将元素A,B,C,D,E,F,5,4,3,2,1依次入队,然后

23、再依次退队,则元素退队的顺序为【1】。(2010年3月),答案:A,B,C,D,E,F,5,4,3,2,1,第48页,9.设某循环队列的容量为50,如果头指针front=45(指向队头元素的前一位置),尾指针rear=10(指向队尾元素),则该循环队列中共有【2】个元素。(2010年3月),8。假设用一个长度为50的数组(数组元索的下标从0到49)作为栈的存储空间,栈底指针bottom指间栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有【】个元素。(2009年3月),答案:19,答案:15,4650110,链表不具有的特点是A)不必事先估计存储

24、空间 B)可随机访问任一元素C)插入删除不需要移动元素D)所需空间与线性表长度成正比数据结构分为逻辑结构与存储结构,线性链表属于【1】。数据结构中,与所使用的计算机无关的是数据的 A)存储结构B)物理结构 C)逻辑结构D)物理和存储结构 数据的逻辑结构有线性结构和【1】两大类。数据的存储结构是指A)数据所占的存储空间B)数据的逻辑结构在计算机中的表示C)数据在计算机中的顺序存储方式D)存储在外存中的数据,例题讲解,存储结构,非线性结构,顺序存储方法是把逻辑上相邻的结点存储在物理位置【2】的存储单元中。数据处理的最小单位是 A)数据 B)数据元素 C)数据项D)数据结构数据结构作为计算机的一门学

25、科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及 A)数据的存储结构 B)计算方法 C)数据映象 D)逻辑存储线性表的顺序存储结构和线性表的链式存储结构分别是 A)顺序存取的存储结构、顺序存取的存储结构 B)随机存取的存储结构、顺序存取的存储结构 C)随机存取的存储结构、随机存取的存储结构 D)任意存取的存储结构、任意存取的存储结构,相邻,根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分成 A)动态结构和静态结构 B)紧凑结构和非紧凑结构 C)线性结构和非线性结构 D)内部结构和外部结构 数据结构包括数据的逻辑结构、数据的【2】以及对数据的操作运算。数据的基本单位是

26、【5】。下列叙述中,错误的是 A)数据的存储结构与数据处理的效率密切相关 B)数据的存储结构与数据处理的效率无关 C)数据的存储结构在计算机中所占的空间不一定是连续的 D)一种数据的逻辑结构可以有多种存储结构,存储结构,数据元素,链表不具有的特点是A)不必事先估计存储空间 B)可随机访问任一元素C)插入删除不需要移动元素D)所需空间与线性表长度成正比顺序存储方法是把逻辑上相邻的结点存储在物理位置【2】的存储单元中。长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【1】。线性表若采用顺序存储结构时,要求内存中可用存储单元的地址 A)必须是连

27、续的 B)部分地址必须是连续的 C)一定是不连续的 D)连续不连续都可以,例题讲解,相邻,线性表L=(a1,a2,a3,ai,an),下列说法正确的是 A)每个元素都有一个直接前件和直接后件 B)线性表中至少要有一个元素 C)表中诸元素的排列顺序必须是由小到大或由大到小 D)除第一个元素和最后一个元素外,其余每个元素都有一个 且只有一个直接前件和直接后件线性表的顺序存储结构和线性表的链式存储结构分别是 A)顺序存取的存储结构、顺序存取的存储结构 B)随机存取的存储结构、顺序存取的存储结构 C)随机存取的存储结构、随机存取的存储结构 D)任意存取的存储结构、任意存取的存储结构 下列叙述中,错误的

28、是 A)数据的存储结构与数据处理的效率密切相关 B)数据的存储结构与数据处理的效率无关 C)数据的存储结构在计算机中所占的空间不一定是连续的 D)一种数据的逻辑结构可以有多种存储结构,根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分成 A)动态结构和静态结构 B)紧凑结构和非紧凑结构 C)线性结构和非线性结构 D)内部结构和外部结构当线性表采用顺序存储结构实现存储时,其主要特点是【1】。,随机存取,链表不具有的特点是A)不必事先估计存储空间 B)可随机访问任一元素C)插入删除不需要移动元素D)所需空间与线性表长度成正比用链表表示线性表的优点是A)便于随机存取 B)花费的存储空

29、间较顺序存储少C)便于插入和删除操作 D)数据元素的物理顺序与逻辑顺序相同长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【1】。在单链表中,增加头结点的目的是 A)方便运算的实现 B)使单链表至少有一个结点 C)标识表结点中首结点的位置 D)说明单链表是线性表的链式存储实现,例题讲解,非空的循环单链表head的尾结点(由p所指向),满足 A)p-next=NULLB)p=NULL C)p-next=head D)p=head 循环链表的主要优点是 A)不再需要头指针了 B)从表中任一结点出发都能访问到整个链表 C)在进行插入、删除运算时

30、,能更好的保证链表不断开 D)已知某个结点的位置后,能够容易的找到它的直接前件当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为【2】。用链表表示线性表的突出优点是【1】。,上溢,插入、删除灵活,栈和队列的共同特点是 A)都是先进先出 B)都是先进后出 C)只允许在端点处插入和删除元素 D)没有共同点如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是 A)e3,e1,e4,e2 B)e2,e4,e3,e1 C)e3,e4,e1,e2D)任意顺序一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。而实现递归调用中的存储分配通常用 A)栈

31、B)堆 C)数组 D)链表,例题讲解,栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是 A)ABCED B)DCBEA C)DBCEA D)CDABE 栈通常采用的两种存储结构是 A)线性存储结构和链表存储结构B)散列方式和索引方式 C)链表存储结构和数组 D)线性存储结构和非线性存储结构栈和队列通常采用的存储结构是【1】。下列数据结构中,按先进后出原则组织数据的是 A)线性链表 B)栈 C)循环链表 D)顺序表当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为【2】。,链表存储结构和数组,上溢,由两个栈共享一

32、个存储空间的好处是A)减少存取时间,降低下溢发生的机率 B)节省存储空间,降低上溢发生的机率C)减少存取时间,降低上溢发生的机率 D)节省存储空间,降低下溢发生的机率下列关于栈的叙述中正确的是)在栈中只能插入数据 B)在栈中只能删除数据C)栈是先进先出的线性表 D)栈是后进先出的线性表下列关于队列的叙述中正确的是)在队列中只能插入数据 B)在队列中只能删除数据C)队列是先进先出的线性表 D)队列是后进先出的线性表,第60页,树型结构是一种重要的非线性结构。树的概念 二叉树的概念 二叉树的存储 二叉树的遍历,3.树与二叉树,第61页,树的概念,树的定义:是一种简单的非线性结构。n个结点的有限集。

33、(n=0),A,B,D,F,E,C,G,H,I,J,K,M,结点:根结点:没有前件的结点只有一个称为根结点。简称树的根。空树:无结点则称为空树;父结点:结点的前件称该结点的父结点。,A,只有一个结点的树,第62页,树型结构的常用术语,A,B,D,F,E,C,G,H,I,J,K,M,子结点:结点的后件,称为该结点的子结点。可以有多个。叶子结点 没有后件的结点;Q:图中叶子结点有几个?7结点的度 一个结点的子树的个数;(有几个分叉)Q:结点A、G的度数?3,2.Q:度数为0、1、2、3的结点分别有几个?树的度 树中所有结点度的最大值;Q:右图中树的度?3,第63页,树型结构的常用术语,A,B,D,

34、F,E,C,G,H,I,J,K,M,结点的层次 树中根结点的层次为1,根结点子树的根为第2层,以此类推;Q:图中结点F的层次?树的深度 树中所有结点层次的最大值;Q:图中树的深度?有序树、无序树 如果树中每棵子树从左向右的排列拥有一定的顺序,不得互换,则称为有序树,否则称为无序树。,第64页,二叉树的概念,定义:二叉树是一种有序的树形结构。它与一般树形结构的区别是:每个结点最多有两棵子树;子树有左右之分,次序不能任意颠倒。称左子树和右子树,二叉树的5种基本形态,第65页,树与二叉树的区别,A树和二叉树的结点个数最少都可为0。B树中结点的最大度数没有限制,二叉树结点最大度数为2。C树的结点无左、

35、右之分,二叉树的结点子树有明确的左、右之分。,3个结点的树,3个结点的二叉树,第66页,二叉树的性质,【性质1】在二叉树的第i层上最多有2i-1个结点(i1),第67页,【性质2】深度为h的二叉树最多有2h-1个结点(h 1),第68页,【性质3】二叉树上叶子结点数比度为2的结点数多1,度为2的结点,叶子结点,第69页,满二叉树和完全二叉树,满二叉树:除最后一层外,每一层上的所有结点都有两个子结点。最后一层的结点均为0度。完全二叉树:除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。则称这棵二叉树为完全二叉树。完全二叉树中度数为1的结点的个数为0或1。,第70页,满

36、二叉树,完全二叉树,12,13,8,9,10,11,4,5,6,7,1,2,3,完全二叉树是满二叉树 满二叉树也是完全二叉树,第71页,12,13,8,9,10,11,4,5,6,1,2,3,非完全二叉树,深度为4的完全二叉树,8,4,5,6,7,1,2,3,第72页,【性质4】具有n个结点的完全二叉树的深度为 log2(n+1)其中,log2n 的结果是不大于log2n的最大整数,深度为4的满二叉树,深度为4的完全二叉树,深度为3的完全二叉树具有47个结点深度为4的完全二叉树具有815深度为5的完全二叉树具有1531,log2(8+1)=ln9/In2=4log2(15+1)=In16/In

37、2=4,深度为6的完全二叉树 具有3263深度为7的完全二叉树 具有64127深度为8的完全二叉树 具有128255深度为9的完全二叉树 具有256511深度为10的完全二叉树具有5121023深度为11的完全二叉树具有10242047,第73页,性质5:具有n个结点的完全二叉树的深度为,例:n=2 k=2 n=6 k=3 n=7 k=3 n=8 k=4 n=12 k=4,第74页,性质6:如果对一棵有n个结点的完全二叉树的结点按层 序编号,则对任一结点i(1=i=n)有:,总之:如 i1它的双亲是i/2取整,左子结点是2*i,右子结点是2*i+1.当然如果算下来超过总数民N,则为没有。,第7

38、5页,例:,i=1 是树的根,无双亲;其左子结点为2*i=2,右子结点为2*i+1=3.,2*i=1812 2*i+1=1912 其无左、右子结点。,2*i+1=1312 其无右子结点。,第76页,1:在深度为7的满二叉树中,叶子结点的个数为(2006年4月)A)32 B)31 C)64 D)632:在深度为7的满二叉树中,度为2的结点个数为【】。(07年4月)3:一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为(07年9月)A)219 B)221 C)229 D)2314:某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。(2005年4月)5:一棵二叉

39、树第六层(根结点为第一层)的结点数最多为【】个。(2005年9月),树型结构方面的考题,1答案:C。,3答案:A。,5答案:32。,2答案:63。,4答案:19。,第77页,二叉树的存储,在计算机中,二叉树通常采用链式存储结构。对于满二叉树和完全二叉树可以按层进行顺序存储。,二叉树的存储结点的结构,A,B,D,C,F,G,E,t,第78页,2、二叉树的存储结构,(2)链式存储结构,T16,若父结点在数组中i下标处,其左孩子在2*i处,右孩子在2*i+1处。,(1)顺序存储结构,(1)顺序存储结构,2h-1=,24-1=15,用一组连续的存储单元存放二叉树的数据元素。结点在数组中的相对位置蕴含着

40、结点之间的关系。,一般二叉树必须按完全二叉树的形式存储,将造成存储的浪费。,第79页,(2)链式存储结构,链式存储结构,二叉链表三叉链表,二叉链表:,二叉链表的结点包含三个域:数据域、左、右指针域。,例:,第80页,三叉链表:,三叉链表的结点包含四个域:数据域、左、右、双亲指针域。,例:,链式存储结构的特点:(1)操作便于实现(2)结构复杂,第81页,二叉树的遍历,遍历指不重复地访问二叉树中的所有结点。二叉树的遍历的次序与树型结构上的大多数运算有联系。遍历的方式有三种(1)先(前)序遍历(DLR)(2)中序遍历(LDR)(3)后序遍历(LRD),第82页,二叉树的遍历,遍历指不重复地访问二叉树

41、中的所有结点。(1)先(前)序遍历(DLR)根左右 若二叉树为空,则结束遍历操作;否则访问根结点;先序遍历左子树;先序遍历右子树。,先序遍历的结果:A B E C F G H D,第83页,(2)中序遍历(LDR)左根右 若二叉树为空,则结束遍历操作;否则中序遍历左子树;访问根结点;中序遍历右子树。中序遍历的结果:E B A F H G C D(3)后序遍历(LRD)右根左 若二叉树为空,则结束遍历操作;否则后序遍历左子树;后序遍历右子树;访问根结点。后序遍历的结果:E B H G F D C A,第84页,先序序列:ABDGCEFH中序序列:DGBAECHF后序序列:GDBEHFCA,A,B

42、,C,F,H,D,E,G,下图所示的二叉树经过三种遍历得到的顺序分别为?,练习:,根据先序遍历序列,建立二叉树,第85页,1:设二叉树如下:(2010年3月)对该二叉树进行后序遍历的结果为【3】,树型结构方面的考题 2,2:对如下二叉树(2006年4月)进行后序遍历的结果为A)ABCDEFB)DBEAFC C)ABDECFD)DEBFCA,EDBGHFCA,D,A,B,C,F,H,D,G,E,已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是 A)acbed B)decab C)deabc D)cedba 已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和D

43、BGEACHF,则该二叉树的后序遍历为 A)GEDHFBCA B)DGEBHFCA C)ABCDEFGH D)ACBFEDHG树是结点的集合,它的根结点数目是 A)有且只有1B)1或多于1 C)0或1D)至少2下列叙述中正确的是 A)线性表是线性结构B)栈与队列是非线性结构 C)线性链表是非线性结构D)二叉树是线性结构,例题讲解,在深度为5的满二叉树中,叶子结点的个数为 A)32 B)31 C)16 D)15 若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是 A)bdgcefha B)gdbecfha C)bdgaechf D)g

44、dbehfca在树结构中,树根结点没有【1】。具有3个结点的二叉树有 A)2种形态 B)4种形态 C)7种形态 D)5种形态设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为 A)12 B)13 C)14D)15,双亲结点,设有下列二叉树:对此二叉树前序遍历的结果为A)ZBTTCPXA B)ATBZXCTP C)ZBTACTXP D)ATBZXCPT设有下列二叉树:对此二叉树的中序遍历的结果为A)ABCDEF B)DBEAFC C)ABDECF D)DEBFCA,设树T的度为4,其中度为1、2、3、4的结点个数分别为4、2、1、1。则T中的叶子结点数为A)8 B)7 C

45、)6 D)5设一棵完全二叉树共有700个结点,则该二叉树中有()个叶子结点。在一个容量为15的循环队列中,若头指针front=6,尾指针rear=9,则该循环队列中共有()个元素。设一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为()。,350,3,DEBFCA,第90页,查找技术,查找是数据处理的重要内容。查找指在一个给定的数据结构中查找指定的元素,该元素也称关键字。若找到了满足条件的结点,称查找成功;否则称查找失败。衡量一个查找算法的主要标准是查找过程中对关键字进行的平均比较次数。通常根据不同的数据结构,采用不同的查找方法:顺序查找 二分查找,第91页,

46、1.7.1.1 顺序查找(线性查找),查找过程:对给定的一关键字K,从线性表的一端开始,逐个进行记录的关键字和K的比较,直到找到关键字等于K的记录或到达表的另一端。可以采用从前向后查,也可采用从后向前查的方法。在平均情况下,大约要与表中一半以上元素进行比较,效率较低。平均查找长度较大。最好情况:1 最坏情况:n在下面两种情况下只能采取顺序查找:a.线性表为无序表(元素排列是无序的);b.即使是有序线性表,但采用的是链式存储结构。,第92页,1.7.1.2 折半查找(二分法查找),思想:先确定待查找记录所在的范围,然后逐步缩小范围,直到找到或确认找不到该记录为止。前提:必须在具有顺序存储结构的有

47、序表中进行。分三种情况:1)若中间项的值等于x,则说明已查到。2)若x小于中间项的值,则在线性表的前半部分查找;3)若x大于中间项的值,则在线性表的后半部分查找。特点:比顺序查找方法效率高。最坏的情况下,需要比较 log2n次。,第93|92页,折半查找算法举例,对给定数列(有序)3,5,11,17,21,23,28,30,32,50,按折半查找算法,查找关键字值为30的数据元素。a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 第1次:3,5,11,17,21,23,28,30,32,50 K=30 mid1=(1+10)/2=5 ka(mid1)=a(5)=21 第2次:23,

48、28,30,32,50 mid2=(6+10)/2=8 K=a(mid2)=a(8)=30,low,high,mid,low,high,mid,第94|92页,练习假设待查有序(升序)顺序表中数据元素的关键字序列为(8,18,27,42,47,50,56,68,95,120),用折半查找方法查找关键字值为27的数据元素.,对于长度为n的有序线性表,最坏情况只需比较log2n次。,第95页,1.7.2 排序,1.7.2.1 概述 1、排序的功能:将一个数据元素(或记录)的 任意序 列,重新排成 一个按关键字有序的序列。2、排序过程的组成步骤:首先比较两个关键字的大小;然后将记录从一个位置移动到另

49、一个位置。,第96页,排序方法,插入排序,选择排序,交换排序,归并排序,简单插入排序,希尔排序,简单选择排序,堆排序,起泡排序,快速排序,第97页,1.7.2.2 插入排序 简单插入、希尔排序,1、简单插入排序:基本思想:从数组的第2号元素开始,顺序从数组中取出元素,并将该元素插入到其左端已排好序的数组的适当位置上。,第98页,该算法适合于n 较小的情况,时间复杂度为O(n2).,待排元素序列:53 27 36 15 69 42第一次排序:27 53 36 15 69 42第二次排序:27 36 53 15 69 42第三次排序:15 27 36 53 69 42第四次排序:15 27 36

50、53 69 42第五次排序:15 27 36 42 53 69 直接插入排序示例,对于有n个数据元素的待排序列,插入操作要进行n-1趟,最坏情况下:需要n(n-1)/2次比较最好:n-1次比较,第99页,希尔排序:,希尔排序的基本思想:先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序.最坏情况下:需要O(n1.5)次比较,第100页,1、简单选择排序 思想:首先从1n个元素中选出关键字最小的记录交换到第一个位置上。然后再从第2 个到第n个元素中选出次小的记录交换到第二个位置上,依次类推。,1.7.2.3 选择排序 简

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号