收藏 分享(赏)

公共基础--数据结构与算法PPT课件..ppt

上传人:Facebook 文档编号:3837113 上传时间:2018-11-20 格式:PPT 页数:158 大小:1.26MB
下载 相关 举报
公共基础--数据结构与算法PPT课件..ppt_第1页
第1页 / 共158页
公共基础--数据结构与算法PPT课件..ppt_第2页
第2页 / 共158页
公共基础--数据结构与算法PPT课件..ppt_第3页
第3页 / 共158页
公共基础--数据结构与算法PPT课件..ppt_第4页
第4页 / 共158页
公共基础--数据结构与算法PPT课件..ppt_第5页
第5页 / 共158页
点击查看更多>>
资源描述

1、全国计算机等级考试 二级公共基础,考试方式,1. 笔试:90分钟,满分100分,其中含公共基础知识部分的30分(公共基础知识有10道选择题和5道填空题共三十分。 )。 2. 上机操作:90分钟,满分100分。 上机操作包括: (1) 基本操作。 (2) 简单应用。 (3) 综合应用,基本要求,1. 掌握算法的基本概念。 2. 掌握基本数据结构及其操作。 3. 掌握基本查找和排序算法。 4. 掌握逐步求精的结构化程序设计方法。 5. 掌握软件工程的基本概念。 6. 掌握数据库的基本知识,了解关系数据库的设计。,考试内容:第一章,1. 算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度

2、)。 2. 数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与非线性结构的概念。 3. 线性表的定义;线性表的顺序存储结构及其插入与删除运算。 4. 栈和队列的定义;栈和队列的顺序存储结构及其基本运算。 5. 线性单链表、双向链表与循环链表的结构及其基本运算。 6. 树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。 7. 顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插入类排序)。,考试内容:第二章,1. 程序设计方法与风格。 2. 结构化程序设计。 3. 面向对象的程序设计方法,对象,方法,属性及继承与多态性。,考试内容:第三章,

3、1. 软件工程基本概念,软件生命周期概念,软件工具与软件开发环境。 2. 结构化分析方法,数据流图,数据字典,软件需求规格说明书。 3. 结构化设计方法,总体设计与详细设计。 4. 软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。 5. 程序的调试,静态调试与动态调试。,考试内容:第四章,1. 数据库的基本概念:数据库,数据库管理系统,数据库系统。 2. 数据模型,实体联系模型及E-R图,从E-R图导出关系数据模型。 3. 关系代数运算,包括集合运算及选择、投影、连接运算,数据库规范化理论。 4. 数据库设计方法和步骤:需求分析、概念设计、逻辑设

4、计和物理设计的相关策略。,学习方法,基本概念要理解 理解的基础上适当记忆一些概念 多做练习,从练习中总结 与所学的知识结合起来,以增加对知识的理解能力,第一章 数据结构与算法,1.1 算法,1.1.1 算法的基本概念 算法:对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。它是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。,算法特征,(1)可行性; (2)确定性,算法中每一步骤都必须有明确定义,不允许有模棱两可的解释,不允许有多义性; (3)有穷性,算法必须能在有限的时间内做完,取能在执行有限个步骤后终止,包括

5、合理的执行时间的含义; (4)拥有足够的情报。,算法的基本要素,一是对数据对象的运算和操作; 二是算法的控制结构。 (1)算法中对数据的运算和操作 计算机指令系统:一个计算机系统能执行的所有指令的集合。 基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。,(2)算法的控制结构: 算法的控制结构给出了算法的基本框架。 一个算法的功能不仅取决于所选用的操作,而且还与各操作之间的执行顺序有关。算法中各操作之间的执行顺序称为算法的控制结构。 一个算法一般都可以用顺序、选择、循环三种基本控制结构组合而成。,算法的基本要素,算法设计基本方法,(1)列举法:根据提出的问题,列举所有可能的情况,并用

6、问题中给定的条件检验哪些是需要的,哪些是不需要的。 (2)归纳法:通过列举少量的特殊情况,经过分析,最后找出一般的关系。 (3)递推:是指从已知的初始条件出发,逐次推出所要求的各中间结果和最后结果。,算法设计基本方法(续),(4)递归:将问题逐层分解,最后归结为一些最简单的问题。实际上并没有对问题进行求解,而只是当解决到最后那些最简单的问题后,再沿着原来分解的逆过程逐步进行综合。 (5)减半递推技术:所谓“减半”,是指将问题的规模减半,而问题的性质不变;所谓“递推”,是指重复“减半”的过程。例如工程上的分治法,对问题分而治之。,算法设计基本方法(续),(6)回溯法:通过对问题的分析,找出一个解

7、决问题的线索,然后沿着这个线索逐步试探,对于每一步的试探,若试探成功,就得到问题的解,若试探失败,就逐步回退,换别的路线再进行试探。,算法复杂度:算法时间复杂和算法空间复杂度。 1.算法的时间复杂度 算法时间复杂度是指执行算法所需要的计算工作量。算法的工作量用算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数,即算法的工作量=f(n),1.1.2 算法的复杂度,O(1) 常量级 O(n) 线性级 O(n2) 平方级,举例1X=X+1S=0,此算法的基本操作是赋值语句。执行两条语句各一次,共2次,与规模无关。时间复杂度为(1),即常量阶。,执行次数: 2 时间复杂度: O

8、(1),时间复杂度举例,举例2For i=1 to nx=x+1s=s+x Next i,执行次数为:2n 其时间复杂度为:O(n) 即时间复杂度为线性阶。,时间复杂度举例,举例3 For i=1 to nFor j =1 to nx=x+1s=s+xnext j Next i,执行次数2n2 其时间复杂度为:O(n2) 即时间复杂度为平方阶。,时间复杂度举例,2.算法空间复杂度 算法空间复杂度是指执行这个算法所需要的内存空间。 一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。 算法的空间复杂度和时间复杂度没有直接的联系。,算法的

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

10、以求改进算法的工作量大小和实现算法所需的存储单元多少分别称为算法的 【1】和【2】 。,2.2 数据结构,数据结构的定义 数据的逻辑结构和存储结构 数据结构的图形表示 线性结构与非线性结构,2.2.1 数据结构研究的主要内容,当今计算机应用的特点: 所处理的数据量大且具有一定的关系; 对其操作不再是单纯的数值计算,而更多地是需要对其进行组织、管理和检索。 应用举例1学籍档案管理 假设一个学籍档案管理系统应包含如下表1-1所示的学生信息。,特点:l 每个学生的信息占据一行,所有学生的信息按学号顺序依次排列构成一张表格;l 表中每个学生的信息依据学号的大小存在着一种前后关系,这就是我们所说的线性结

11、构;l 对它的操作通常是插入某个学生的信息,删除某个学生的信息,更新某个学生的信息,按条件检索某个学生的信息等等。应用举例2输出n个对象的全排列输出n个对象的全排列可以使用下图1-1所示的形式描述。,图 1-1 3个对象的全排列过程,特点:l 在求解过程中,所处理的数据之间具有层次关系,这是我们所说的树形结构;l 对它的操作有:建立树形结构,输出最低层结点内容等等。应用举例3制定教学计划在制定教学计划时,需要考虑各门课程的开设顺序。有些课程需要先导课程,有些课程则不需要,而有些课程又是其他课程的先导课程。比如,计算机专业课程的开设情况如下表1-2所示:,课程先后关系的图形描形式:,图 1-2

12、计算机专业必修课程开设先后关系,特点l 课程之间的先后关系用图结构描述;l 通过实施创建图结构,按要求将图结构中的顶点进行线性排序。 结论: 数据结构主要研究以下三个方面的问题:(1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构; (2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构; (3)对各种数据结构进行的运算。,数据结构是一门研究数据组织、存储和运算的一般方法的学科。,2.2.2 基本概念和术语,能输入到计算机中 并能被计算机程序处理的 符号的集合。,整数(1,2)、实数(1.1,1.2) 字符串(Beijing)、 图形、声音。,2.2.2 基本概

13、念和术语,数据结构是一门研究数据组织、存储和运算的一般方法的学科。,2.2.2 基本概念和术语,计算机管理图书问题 在图书馆里有各种卡片:有按书名编排的、 有按作者编排的、有按分类编排 如何将查询图书的这些信息存入计算机中 既要考虑查询时间短,又要考虑节省空间,数据结构是一门研究数据组织、存储和运算的一般方法的学科。,最简单的办法之一是建立一张表, 每一本书的信息在表中占一行,如,2.2.2 基本概念和术语,数据结构是一门研究数据组织、存储和运算的一般方法的学科。,如何将0,1,2,3,4,5,6,7,8,9这10个数存放在 计算机中能最快地达到你所需要的目的? 目的不同,最佳的存储方方法就不

14、同。 从大到小排列:9,8,7,6,5,4,3,2,1,0 输出偶数:0,2,4,6,8,1,3,5,7,9,数据元素在 计算机中的表示,数据结构是一门研究数据组织、存储和运算的一般方法的学科。,2.2.2 基本概念和术语,对数据结构中的节点进行 操作处理 (插入、删除、修改、查找、排序),2.2.2 基本概念和术语,数据结构是一门研究数据组织、存储和运算的一般方法的学科。,数据元素(Data Element),数据元素是数据的基本单位,即数据集合中的个体。有时一个数据元素可由若干数据项(Data Item)组成。数据项是数据的最小单位。,数据结构可描述为 Group=(D,R),有限个数据元

15、素的集合,有限个节点间关系的集合,用图形表示数据结构B=(D,R),其中 D=di|1=i7=d1,d2,d3,d4,d5,d6,d7 R=( d1 , d3 ),( d1 , d7 ),( d2 , d4 ),( d3 , d6 ),( d4 , d5 ),1数据的逻辑结构,2、数据的存储结构,3、数据的运算:检索、排序、插入、删除、修改等。,A线性结构,B非线性结构,A 顺序存储,B 链式存储,线性表,栈,队,树形结构,图形结构,数据结构的三个方面,数据结构可描述为 Group=(D,R),线性结构,A , B , C , ,X ,Y , Z,学 生 成 绩 表,线性表结点间是以线性关系联

16、结,1数据的逻辑结构,2、数据的存储结构,3、数据的运算:检索、排序、插入、删除、修改等。,A线性结构,B非线性结构,A 顺序存储,B 链式存储,线性表,栈,队,树形结构,图形结构,数据结构的三个方面,数据结构可描述为 Group=(D,R),树形结构,全校学生档案管理的组织方式,计算机程序管理系统也是典型的树形结构,树形结构 结点间具有分层次的连接关系,1数据的逻辑结构,2、数据的存储结构,3、数据的运算:检索、排序、插入、删除、修改等。,A线性结构,B非线性结构,A 顺序存储,B 链式存储,线性表,栈,队,树形结构,图形结构,数据结构的三个方面,(亦称物理结构),D= 1 , 2 , 3

17、, 4R=(1,2) , (1,3) , (1,4) , (2,3)(3,4) , (2,4) ,D= 1 , 2 , 3 R= (1,2) , (2,3) , (3,2) , (1,3) ,图形结构节点间的连结是任意的,1数据的逻辑结构,2、数据的存储结构,3、数据的运算:检索、排序、插入、删除、修改等。,A线性结构,B非线性结构,A 顺序存储,B 链式存储,线性表,栈,队,树形结构,图形结构,数据结构的三个方面,(亦称物理结构),元素n,元素i,元素2,元素1,Lo,Lo+m,Lo+(i-1)*m,Lo+(n-1)*m,存储地址,存储内容,Loc(a)=Lo+(i-1)*m,顺序存储,每个

18、元素所占用 的存储单元个数,元素n,元素i,元素2,元素1,存储内容,顺序存储结构常用于线性数据结构,将逻辑上相邻的数据元素存储在物理上相邻的存储单元里。,顺序存储结构的三个弱点: 1.作插入或删除操作时,需移动大量元数。 2.长度变化较大时,需按最大空间分配。 3.表的容量难以扩充。,1数据的逻辑结构,2、数据的存储结构,3、数据的运算:检索、排序、插入、删除、修改等。,A线性结构,B非线性结构,A 顺序存储,B 链式存储,线性表,栈,队,树形结构,图形结构,数据结构的三个方面,(亦称物理结构),1536,元素2,1400,元素1,1346,元素3,元素4,1345,h,链式存储,每个节点都

19、由两部分组成:数据域和指针域。 数据域存放元素本身的数据, 指针域存放指针。 数据元素之间逻辑上的联系由指针来体现。,1536,元素2,1400,元素1,1346,元素3,元素4,head,链式存储,1345,1536,元素2,1400,元素1,1346,元素3,元素4,1345,h,链式存储,1.比顺序存储结构的存储密度小(每个节点都由数据域和指针愈组成)。 2.逻辑上相邻的节点物理上不必相邻。 3.插入、删除灵活(不必移动节点,只要改变节点中的指针)。,链接存储结构特点:,1数据的逻辑结构,2、数据的存储结构,3、数据的运算:检索、排序、插入、删除、修改等。,A线性结构,B非线性结构,A

20、顺序存储,B 链式存储,线性表,栈,队,树形结构,图形结构,数据结构的三个方面,(亦称物理结构),线性结构和非线性结构,如果一个非空的数据结构满足下列两个条件: 有且只有一个根结点; 每一个结点最多有一个前件,也最多有一个后件 则称该数据结构为线性结构(线性表)。 如果一个数据结构不是线性结构,则称之为非线性结构。,例题讲解,链表不具有的特点是 A) 不必事先估计存储空间 B) 可随机访问任一元素 C) 插入删除不需要移动元素 D) 所需空间与线性表长度成正比 数据结构分为逻辑结构与存储结构,线性链表属于 【1】 。 数据的逻辑结构有线性结构和 【2】 两大类。 顺序存储方法是把逻辑上相邻的结

21、点存储在物理位置 【3】 的存储单元中。,数据处理的最小单位是A) 数据 B) 数据元素 C) 数据项 D) 数据结构 数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及A) 数据的存储结构 B) 计算方法 C) 数据映象 D) 逻辑存储 线性表的顺序存储结构和线性表的链式存储结构分别是A) 顺序存取的存储结构、顺序存取的存储结构B) 随机存取的存储结构、顺序存取的存储结构C) 随机存取的存储结构、随机存取的存储结构D) 任意存取的存储结构、任意存取的存储结构,根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分成A) 动态结构和静态结构 B)

22、紧凑结构和非紧凑结构C) 线性结构和非线性结构 D) 内部结构和外部结构 数据结构包括数据的逻辑结构、数据的 【2】 以及对数据的操作运算。 数据的基本单位是 【5】 。,下列叙述中,错误的是A) 数据的存储结构与数据处理的效率密切相关B) 数据的存储结构与数据处理的效率无关C) 数据的存储结构在计算机中所占的空间不一定是连续的D) 一种数据的逻辑结构可以有多种存储结构 数据的存储结构是指 A)数据所占的存储空间 B)数据的逻辑结构在计算机中的表示 C)数据在计算机中的顺序存储方式 D)存储在外存中的数据,1.3 线性表及其顺序存储结构,1.3.1 线性表的基本概念 线性表由一组数据元素构成,

23、数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。 最简单、最常用的一种数据结构 例如:一个n维向量(x1,x2,x3,xn)是一个长度为n的线性表英文小写字母表(a,b,c,z)是一个长度为26的线性表 线性表是一种线性结构,学生情登记表,在复杂线性表中,由若干数据项组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。,非空线性表的结构特征: (1)且只有一个根结点a1,它无前件; (2)有且只有一个终端结点an,它无后件; (3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。结点个数n称为线性表的长度,当n=0时,称为空表。,1.3.2 线性表

24、的顺序存储结构,线性表的顺序存储结构具有以下两个基本特点: (1)线性表中所有元素的所占的存储空间是连续的; (2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。 ai的存储地址为:ADR(ai)=ADR(a1)+(i-1)k,,ADR(a1)为第一个元素的地址,k代表每个元素占的字节数。,占k个字节 占k个字节 占k个字节 占k个字节,ADR(a1) ADR(a1)k ADR(a1)+(i-1)k ADR(a1)+(n-1)k,一般来说,用一维数组来表示线性表的顺序存储空间。长度为n的线性表(a1,a2,ai,,an),1.3.3 顺序表的插入运算,插入运算是指在表的第i(1in+1

25、)个位置上,插入一个新结点x,使得长度变成n+1的线性表。 (a0, a1,ai-1,ai, , an),插入前,a1,a2,ai-1,ai,an,last,Maxsize-1,后移后,a1,a2,ai-1,ai,ai+1,an,x,last,Maxsize-1,插入后,ai1,Maxsize-1,ai,在线性表L中第i个数据元素之前插入数据元素e 步骤: 1、检查插入要求的有关参数的合理性 2、把原来第n个数据元素至第i个元素(共n-i+1)依次后移一个数组元素的位置。 3、把新数据元素放在第i个位置上 4、修正线性表的数据元素个数。,顺序表插入运算的复杂度,这里的问题规模是表的长度,设它的

26、值为n。该算法的时间主要花费在循环的结点后移语句上,该语句的执行次数(即移动结点的次数)是n-i+1 。由此可看出,所需移动结点的次数不仅依赖于表的长度n,而且还与插入位置i有关。 当in时,由于循环变量的终值大于初值,结点后移语句将不进行;这是最好情况,其时间复杂度O(1);当i=1时,结点后移语句将循环执行n次,需移动表中所有结点,这是最坏情况,其时间复杂度为O(n)。,由于插入可能在表中任何位置上进行,因此需分析算法的平均复杂度 在长度为n的线性表中第i个位置上插入一个结点,令Eis(n)表示移动结点的期望值(即移动的平均次数),则在第i个位置上插入一个结点的移动次数为n-i+1。 pi

27、 是在第i 个元素之前插入一个元素的概率, 故 Eis(n)= pi(n-i+1) 不失一般性,假设在表中任何位置(1in+1)上插入结点的机会是均等的,则p1=p2=p3=p(n+1)=1/(n+1) 因此,在等概率插入的情况下, Eis(n)= ( n -i+1)/(n+1),线性表中含有n个数据元素,在进行插入操作时,若假定在n+1个位置上插入元素的可能性均等,则平均移动元素的个数为:也就是说,在顺序表上做插入运算,平均要移动表上一半结点。当表长 n较大时,算法的效率相当低。虽然Eis(n)中n的的系数较小,但就数量级而言,它仍然是线性阶的。因此算法的平均时间复杂度为O(n)。,1.3.

28、4 顺序表的删除运算,删除运算是指将表的第i(1in) 结点删去,使得长度为n的线性表变成n-1的线性表。(a1,a2,ai-1,ai, , an-1),a0,a1,ai-1,ai,ai+1,an-1,删除,last,maxsize,删除前,a0,a1,ai-1,ai+2,an-1,last,maxsize,删除后,ai+1,算法思想:删除第i个元素时,需要将n至i+1个(共n-I)个元素向前移动一个位置。步骤: 1、检查删除要求的有关参数的合理性 2、把原来的第I+1个数据元素至第n个(共n-I)个元素依次向前移动一个位置 3、修正线性表的数据元素个数。,删除算法的时间分析与插入算法相似,结

29、点的移动次数也是由表长n和位置i决定。 若i=n,则由于循环变量的初值大于终值,前移语句将不执行,无需移动结点;时间复杂度为O(1)。 若i=1,则前移语句将循环执行n-1次,需移动表中除开始结点外的所有结点。时间复杂度为O(n)。,顺序表删除运算的复杂度,删除算法的平均性能分析与插入算法相似。在长度为n的线性表中删除一个结点,令Ede(n)表示所需移动结点的平均次数,删除表中第i个结点的移动次数为n-i,故Ede(n)= pi(n-i) 式中,pi表示删除表中第i个结点的概率。在等概率的假设下,p1=p2=p3=pn=1/n,在进行删除操作时,若假定删除每个元素的可能性均等,则平均移动元素的

30、个数为:,算法复杂性分析,1、插入 n/2 T(n)=O(n)2、删除 (n-1)/2 T(n)=O(n),顺序表的基础要点,1、线性表是具有n个数据元素的有限序列。 2、线性表的顺序存储结构具有三个弱点:(如何解决?) 在插入和删除时,需移动大量元素 由于难以估计,必须预先分配较大的空间 表的容量难以扩充 3、顺序存储结构通过元素的相对存储地址来表示元素之间的关系 4、线性表顺序存储的优点是可随机存取元素。,顺序表的基础要点(续),5、顺序表中逻辑上相邻的元素的物理位置必定紧邻。 6、顺序表是一种随机存取的存储结构。 7、在顺序表中插入或删除一个元素时,需要平均移动表的一半元素,具有移动的元

31、素个数与该元素的位置有关。 8、在长度为n的顺序表中插入一个元素的时间复杂度为O(n),删除一个元素的时间复杂度为O(n)。,栈,栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的表尾端进行。如下所示:进行插入和删除的表尾端是浮动端,通常被称为栈顶, an 为栈顶元素, 并用一个“栈顶指针”指示;而表头端是固定端,通常被称为栈底, a1 为栈底元素,我们经常将栈用下图的形式描述:,a1, a2, a3, ., an 插入和删除端,结论:后进先出(Last In First Out),简称为LIFO线性表。举例1:家里吃饭的碗,通常在洗干净后一个一个地落在一起存放,在使

32、用时,若一个一个地拿,一定最先拿走最上面的那只碗,而最后拿出最下面的那只碗。举例2:在建筑工地上,使用的砖块从底往上一层一层地码放,在使用时,将从最上面一层一层地拿取。,栈的基本运算: (1)插入元素称为入栈运算; (2)删除元素称为退栈运算; (3)读栈顶元素是将栈顶元素赋给一个指定的变量,此时指针无变化,栈顶指针和栈中元素之间的关系,A,A,B,C,D,E,base=top 空栈,top 指向栈顶元素的下一个位置,当base= 时,表明栈结构不存在。,1.4.2 队列及其基本运算,队列(Queue)也是一种运算受限的线性表。它只允许在表的一端进行插入,而在另一端进行删除。允许删除的一端称为

33、队头(front),允许插入的一端称为队尾(rear)。例如:排队购物。先进入队列的成员总是先离开队列。因此队列亦称作先进先出(First In First Out)的线性表,简称FIFO表。当队列中没有元素时称为空队列。在空队列中依次加入元素a1,a2,an之后,a1是队头元素,an是队尾元素。显然退出队列的次序也只能是a1,a2,an ,也就是说队列的修改是依先进先出的原则进行的。,下图是队列的示意图:a1 a2 an插入端和删除端都是浮动的。通常我们将插入端称为队尾,用一个“队尾指针”指示;而删除端被称为队头,用一个“队头指针”指示。结论:先进先出(First In First Out)

34、,简称为FIFO线性表。,出队,入队,队列的顺序存储结构 实现:用一维数组实现sqM,J1,J2,J3,设两个指针front,rear,约定: rear指示队尾元素; front指示队头元素前一位置 初值front=rear=-1,空队列条件:front=rear 入队列:sq+rear=x; 出队列:x=sq+front;,存在问题 设数组维数为M,则: 当front=-1,rear=M-1时,再有元素入队发生溢出真溢出 当front-1,rear=M-1时,再有元素入队发生溢出假溢出 解决方案 队首固定,每次出队剩余元素向下移动浪费时间 循环队列 基本思想:把队列设想成环形,让sq0接在s

35、qM-1之后,若rear+1=M,则令rear=0;,入队运算是指在循环队列的队尾加入一个新元素 (1)首先将队尾指针进一,即rear=rear+1,并当rear=m+1时置rear=1。 (2)然后将新元素插入到队尾指针指向的位置。,出队运算是指在循环队列的排头位置退出一个元素并赋给指定变量。 (1)首先将排头指针进一,即front=front+1,并且当front=m+1时置front=1 (2)然后将排头指针指向的元素赋值给指定变量,队空:front=rear 队满:front=rear,解决方案: 另外设一个标志以区别队空、队满 S=0 (队空) S=1 (队满),循环队列:s=0表示

36、队列空,s=1且front=rear表示队列满,1.5.1 线性链表的基本概念 线性表顺序存储结构的特点:是一种简单、方便的存储方式。它要求线性表的数据元素依次存放在连续的存储单元中,从而利用数据元素的存储顺序表示相应的逻辑顺序,这种存储方式属于静态存储形式。 线性表顺序存储结构暴露的问题 在做插入或删除元素的操作时,会产生大量的数据元素移动; 对于长度变化较大的线性表,要一次性地分配足够的存储空间,但这些空间常常又得不到充分的利用; 线性表的容量难以扩充。,1.5 线性链表,线性表的链式存储结构是指用一组任意的存储单元(可以连续,也可以不连续)存储线性表中的数据元素。因此,链表中结点的逻辑次

37、序和物理次序不一定相同。为了能正确表示数据元素间的逻辑关系,对于每个数据元素不仅要表示它的具体内容,还要附加一个表示它的直接后继元素存储位置的信息。这个信息称为指针(pointer)或链(link)。这两部分组成了链表中的结点结构:,指针域,用来存放结点的直接后继的地址,数据域,用来存放结点的值,线性表的链式存储结构,例如 :线性表 (a, b,c,d),数据结构中的每一个结点对应于一个存储单元,这种存储单元称为存储结点,简称结点。 结点由两部分组成:(1)用于存储数据元素值,称为数据域;(2)用于存放指针,称为指针域,用于指向前一个或后一个结点。 在链式存储结构中,存储数据结构的存储空间可以

38、不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。 链式存储方式即可用于表示线性结构,也可用于表示非线性结构。,术语 表示每个数据元素的两部分信息组合在一起被称为结点; 其中表示数据元素内容的部分被称为数据域(data); 表示直接后继元素存储地址的部分被称为指针或指针域(next)。,单联表结构示意图,其中,head是头指针,它指向单链表中的第一个结点,这是单链表操作的入口点。由于最后一个结点没有直接后继结点,所以,它的指针域放入一个特殊的值NULL。NULL值在图示中常用()符号表示。,110 hat 200,130 cat 135

39、,135 eat 170,160 mat NULL,165 bat 130,170 fat 110,200 jat 205,205 lat 160,165,head,头指针,数据域,指针域,例如:线性表 (bat,cat,eat,fat,hat,jat,lat,mat),单链表只注重结点的逻辑顺序,不关心每个结点的实际存储位置,因此用箭头来表示链域中的指针。,bat,cat,eat,mat ,head,链式存储结构的特点 (1)线性表中的数据元素在存储单元中的存放顺序与逻辑顺序不一定一致; (2)在对线性表操作时,只能通过头指针进入链表,并通过每个结点的指针域向后扫描其余结点,这样就会造成寻找

40、第一个结点和寻找最后一个结点所花费的时间不等,具有这种特点的存取方式被称为顺序存取方式。,1.5.2 线性链表的基本运算,1、在线性链表中查找指定元素在对线性链表进行插入或删除的运算中,总是首先需要找到插入或删除的位置,这就需要对线性链表进行扫描查找,要线性链表中指定值的前一个结点。,插入:在线性表两个数据元素a和b间插入x,已知p指向a,s-link=p-link;,p-link=s;,p,a,b,c,删除:删除链表中b结点,已知p指向a结点,p-link=p-link-link,循环链表(circular linked list) 循环链表是表中最后一个结点的指针指向头结点,使链表构成环状

41、 特点:从表中任一结点出发均可找到表中其他结点,提高查找效率 操作与单链表基本一致,循环条件不同 单链表p-link=NULL 循环链表p-link=H,例题讲解,下列叙述中,错误的是A) 数据的存储结构与数据处理的效率密切相关B) 数据的存储结构与数据处理的效率无关C) 数据的存储结构在计算机中所占的空间不一定是连续的D) 一种数据的逻辑结构可以有多种存储结构 线性表若采用链式存储结构时,要求内存中可用存储单元的地址A) 必须是连续的 B) 部分地址必须是连续的C) 一定是不连续的 D) 连续不连续都可以,栈和队列的共同特点是A)都是先进先出 B) 都是先进后出 C)只允许在端点处插入和删除

42、元素 D) 没有共同点 如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是A) e3,e1,e4,e2 B) e2,e4,e3,e1 C) e3,e4,e1,e2 D) 任意顺序 一些重要的程序语言(如C语言和Pascal语言) 允许过程的递归调用。而实现递归调用中的存储分配通常用A) 栈 B) 队列 C) 数组 D) 链表 当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为 【2】 。,栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是A) ABCED B) DCBEA C) DBCEA D) CDABE

43、 下列数据结构中,按先进后出原则组织数据的是A) 线性链表 B) 栈 C) 循环链表 D) 顺序表,下列关于栈的叙述中正确的是 )在栈中只能插入数据 B)在栈中只能删除数据 C)栈是先进先出的线性表 D)栈是后进先出的线性表 下列关于队列的叙述中正确的是 )在队列中只能插入数据 B)在队列中只能删除数据 C)队列是先进先出的线性表 D)队列是后进先出的线性表,1.6树与二叉树,树是一种简单的非线性结构,所有元素之间具有明显的层次特性。 在树结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点,简称树的根。每一个结点可以有多个后件,称为该结点的子结点。没有后件的结点

44、称为叶子结点。 在树结构中,一个结点所拥有的后件的个数称为该结点的度,所有结点中最大的度称为树的度。树的最大层次称为树的深度。,树是一种常用的非线性结构。我们可以这样定义:树是n(n0)个结点的有限集合。若n=0,则称为空树;否则,有且仅有一个特定的结点被称为根,当n1时,其余结点被分成m(m0)个互不相交的子集T1,T2,.,Tm,每个子集又是一棵树。由此可以看出,树的定义是递归。,(C)是有13个结点的树,其中A是根,其余结点分成3个子集: T1 、T2 、T3 。都是根A的子树,且本身也是一棵树。例如: T1 其根为B,两棵子树为 T11 = F T12 = E, K, L , T12

45、又是一棵子树,树根为F,K 和 L是E的两个互不相交的子集。,结点: 数据元素的内容及其指向其子树根的分支统称为结点。 结点的度 (Degree): 结点的分支数,即结点拥有的子树数。 终端结点(叶子leaf): 度为0的结点。 非终端结点: 度不为0的结点。 结点的层次: 树中根结点的层次为1,根结点子树的根为第2 层,以此类推。 树的度: 树中所有结点度的最大值。 树的深度: 树中所有结点层次的最大值。 有序树、无序树: 如果树中每棵子树从左向右的排列拥有一定的顺序,不得互换,则称为有序树,否则称为无序树。,术语,1.6.2二叉数及其基本性质,1. 定义 定义:二叉树是另一种树形结构。它与

46、树形结构的区别是:(1)每个结点最多有两棵子树;(2)子树有左右之分。二叉树也可以用递归的形式定义。即:二叉树是n(n0)个结点的有限集合。当n=0时,称为空二叉树;当n0时,有且仅有一个结点为二叉树的根,其余结点被分成两个互不相交的子集,一个作为左子集,另一个作为右子集,每个子集又是一个二叉树。,G H,D E F,B C,A,二叉树的特点: (1)非空二叉树只有一个根结点; (2)每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。,二叉树的5种形态:,(a),(b),(c),(d),(e),(a)空树 (b)只有根结点的二叉树 (c) 右子树为空的二叉树 (d) 左子树为空的二叉

47、树 (e) 左、右子树均非空的二叉树,二叉树具有下列5个重要的性质。 【性质1】 在二叉树的第i层上最多有2i-1个结点(i1)。二叉树的第1层只有一个根结点,所以,i=1时,2i-1=21-1=20=1成立。 假设对所有的j,1ji成立,即第j层上最多有2j-1个结点成立。若j=i-1,则第j层上最多有2j-1=2i-2个结点。由于在二叉树中,每个结点的度最大为2,所以可以推导出第i层最多的结点个数就是第i-1层最多结点个数的2倍,即2i-2*2=2i-1。,二叉树的性质,【性质2】 深度为K的二叉树最多有2K-1个结点(K1)。 由性质1可以得出,1至K层各层最多的结点个数分别为:20,2

48、1,22,23,.,2K-1。这是一个以2为比值的等比数列,前n项之和的计算公式为:,其中 a1为第一项,an为第k项,q为比值。可以得到,该数列前K项之和为:,【性质3】 对于任意一棵二叉树BT,如果度为0的结点(叶子)个数为n0,度为2的结点个数为n2,则n0=n2+1。 证明: 1. 假设度为1的结点个数为n1,结点总数为n。 因为在二叉树中,所有结点的度均小于或等于2,所以结点总数为: n=n0+n1+n2 (1),2. 设B为二叉树中的分支数 从入支的角度看,即前驱结点的角度看,二叉树中,除根结点之外,其余每个结点都有一个且只有一个前驱结点,即有一个从上向下的分支指向(即占有一个分支),所以,总的结点个数n与分支数B之间的关系为:n=B+1。 (2),

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

当前位置:首页 > 中等教育 > 小学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报