等级考基础-数据结构.ppt
《等级考基础-数据结构.ppt》由会员分享,可在线阅读,更多相关《等级考基础-数据结构.ppt(83页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、等级考基础数据结构与算法东华大学计算机学院东华大学计算机学院 孙孙 莉莉2016年年2月月1数据结构基本概念数据结构基本概念1.11.1数据结构的研究内容:数据结构的研究内容:非数值数据之间的结构关系,非数值数据之间的结构关系,及如何表示,如何存储,如何处理。及如何表示,如何存储,如何处理。归纳为三部分:逻辑结构、存储结构和运算集合。归纳为三部分:逻辑结构、存储结构和运算集合。存储结构的二种类型存储结构的二种类型:顺序存储结构顺序存储结构通过在存储器中的相对位置,通过在存储器中的相对位置,表示数据的逻辑结构。表示数据的逻辑结构。非顺序存储结构(链式存储结构)非顺序存储结构(链式存储结构)-由指
2、针表示数据间的逻辑关系。由指针表示数据间的逻辑关系。1.2常用的数据结构常用的数据结构(1)线线性性结结构构:结结构构中中的的数数据据元元素素之之间间存存在在着着一一对对一一的线性关系。线性表、栈、队的线性关系。线性表、栈、队(2)树树形形结结构构:结结构构中中的的数数据据元元素素之之间间存存在在着着一一对对多多的层次关系。的层次关系。-非线性结构非线性结构 (3)图状结构或网状结构:结构中的数据元素之间存在着多对多的任意关系。-非线性结构14 算法与算法分析1.31.3算法与算法分析算法与算法分析 算法的概念算法的概念 算法是对特定问题求解步骤的一种描述算法是对特定问题求解步骤的一种描述 算
3、法的基本特征:算法的基本特征:1 1)可行性:组成算法的操作必须能够在计算机上实现。)可行性:组成算法的操作必须能够在计算机上实现。2 2)确定性:算法的每一步操作必须清晰无二义性。)确定性:算法的每一步操作必须清晰无二义性。3 3)有穷性:算法必须在有限步内结束;)有穷性:算法必须在有限步内结束;4 4)有足够的情报:)有足够的情报:0 0个或多个输入;个或多个输入;1 1个或多个输出;个或多个输出;算法描述的方法很多,如自然语言、框图、类算法描述的方法很多,如自然语言、框图、类C C等等例例:求两个正整数求两个正整数 m m,n n 中的最大数中的最大数MAXMAX的算法的算法 (1 1)
4、若若 m n m n 则则 max=mmax=m (2 2)若若 m=n m=n 则则 max=nmax=n 1、正确性:、正确性:(1)没有语法错误;(2)对于几组输入数据能够得出满足要求的结果;(3)对于精心选择的典型而苛刻的几组输入数据能够得到满足要求的结果。(4)对于一切合法的输入数据都能产生满足要求的结果。2、可读性:、可读性:便于阅读、理解、调试、修改;3、健壮性:、健壮性:对不合法的输入能作出正确的反映与处理;4、高效性:、高效性:执行时间短(时间复杂度时间复杂度)、需求存储空间省(空间复杂度空间复杂度)1.4评价算法标准评价算法标准时间复杂度时间复杂度T(n)以求解问题的基本操
5、作的执行次数作为算法时间的度量。以求解问题的基本操作的执行次数作为算法时间的度量。14 算法与算法分析O(n3)称为矩阵相乘算法时间复杂度;称为矩阵相乘算法时间复杂度;O(n3)表示矩阵相乘算法执行时间与)表示矩阵相乘算法执行时间与n3成正比成正比,即即O(n3)与)与n3同一数量级;同一数量级;例例n阶矩阶矩阵相乘的算法阵相乘的算法For(i=1;i=n;i+)For(j=1;j=n;j+)cij=0;For(k=1;k=n;k+)cij+=aik*bkj 乘法乘法加法加法执行次数均为执行次数均为n3 矩阵相乘的基本运算:乘法矩阵相乘的基本运算:乘法加法;加法;14 算法与算法分析算法空间复
6、杂度算法空间复杂度用执行算法所需的内存空间的大小作为算法所需空间的度量。用执行算法所需的内存空间的大小作为算法所需空间的度量。设执行算法所需的内存空间是问题规模设执行算法所需的内存空间是问题规模n的某个函数的某个函数g(n),则算法空间复杂则算法空间复杂度记作:度记作:S(n)=O(g(n)表示算法内存空间的增长率表示算法内存空间的增长率与与g(n)的增长率相同的增长率相同例计算例计算解法解法1先计算先计算x的幂的幂,存于存于power中中,再分别乘以相应的系数再分别乘以相应的系数#defineN100floatevaluate(floatcoef,floatx,intn)floatpower
7、N,f;inti;for(power0=1,i=1;i=n;i+)poweri=x*poweri-1;for(f=0,i=0;ideta=a;q-next=p-next;p-next=q;headheadzyxp pyxzp pheadheada q q 4)删除结点删除结点q=p-next;p-next=q-next;free(q);headheadzyxq qyxzq qheadheadp pp p随机随机存储结构、顺序存储结构、顺序存取结构存取结构1循环链表循环链表循环链表是将线性链表的最后一个结点的指针指向循环链表是将线性链表的最后一个结点的指针指向链表的第一个结点(首尾相连的单链表)
8、链表的第一个结点(首尾相连的单链表)循环链表(a)非空表 (b)空表headheadheadheada1an2双向链表双向链表3 栈和队列栈和队列栈是限定仅能在表尾一端进行插入、删除操栈是限定仅能在表尾一端进行插入、删除操作的作的线性表线性表(a1,a2,.,ai-1,ai,ai+1,an)插入删除什么是栈什么是栈?3.1 栈栈3.1栈栈将表中允许进行插入、删除操作的一端称为栈顶将表中允许进行插入、删除操作的一端称为栈顶(Top),栈顶的当前位置是动态变化的,由一个栈顶指针指示其位置。栈顶的当前位置是动态变化的,由一个栈顶指针指示其位置。表的另一端称为栈底表的另一端称为栈底(Bottom)。当
9、栈中没有元素时称为空栈。当栈中没有元素时称为空栈。栈的插入操作称为进栈或入栈,删除操作称为出栈或退栈。栈的插入操作称为进栈或入栈,删除操作称为出栈或退栈。3.1 栈栈的示意图栈的示意图出栈出栈进栈进栈栈的特点栈的特点后进先出后进先出第一个进栈的元素在栈底,第一个进栈的元素在栈底,最后一个进栈的元素在栈顶,最后一个进栈的元素在栈顶,第一个出栈的元素为栈顶元素,第一个出栈的元素为栈顶元素,最后一个出栈的元素为栈底元素最后一个出栈的元素为栈底元素栈栈顶顶栈栈底底ana2a1B例例:如果进栈序列为如果进栈序列为e1,e2,e3,e4,则可能的出,则可能的出栈序列是栈序列是?A)e3,e1,e4,e2B
10、)e2,e4,e3,e1C)e3,e4,e1,e2D)任意顺序任意顺序32队列队列什么是队列什么是队列队列是限定仅能在表头进行删除,表尾进行插入的队列是限定仅能在表头进行删除,表尾进行插入的线性表线性表(a1,a2,.,ai-1,ai,ai+1,an)插入插入删除删除33队列队列 a a1 1 a a2 2 a a3 3 a an n入队列入队列队队头头队队尾尾出队列出队列队队 列列 的的 示示 意意 图图队列的特点队列的特点先进先出先进先出第一个入队的元素在队头,第一个入队的元素在队头,最后一个入队的元素在队尾,最后一个入队的元素在队尾,第一个出队的元素为队头元素,第一个出队的元素为队头元素
11、,最后一个出队的元素为队尾元素最后一个出队的元素为队尾元素rearrearfrontfrontJ1rearrearfrontfrontJ2(a)a)空队列空队列(b)J1,J2(b)J1,J2相继相继入队列入队列(c)J1(c)J1出队出队(d)J3,J4,J5(d)J3,J4,J5和和J6J6相继入队之后相继入队之后,J2,J2出队出队rearrearfrontfront0 01 12 23 34 45 53.3 队列rearrearfrontfrontJ5J4J3front,rearfront,rear为整为整数数又有又有J7入队入队,怎么办?怎么办?J2J63.3队列队列3.循环队列循环
12、队列frontfrontrearJ6J6J4J4J5J53 124 05rearrear54 03 12frontfrontJ6J6J7J7J8J8J9J9J4J4J5J5frontfrontrearrear54 03 12(b)(b)队空队空(a)(a)队满队满J7J7rearrear3.3队列队列判分队空、队满方法:判分队空、队满方法:1)另设一个标志)另设一个标志S以区分队空、队满。以区分队空、队满。S=0队空:队空:front=rear;S=1队满:队满:front=rear;2)或少用一个空间或少用一个空间Real+1=front为满为满栈、队列的存储结构?栈、队列的存储结构?fro
13、ntfront54 03 12J6J6J7J7J8J8J4J4J5J5(c c)rearrear4 树和二叉树 41树的定义树的定义 树是树是n个结点的有限集合个结点的有限集合T,当,当n=0时,称为空树;当时,称为空树;当n0时,时,T满足如下条件:在任一棵非空树中:满足如下条件:在任一棵非空树中:(1)有且仅有一个称为根的结点。)有且仅有一个称为根的结点。(2)其余结点可分为)其余结点可分为M个互不相交的子集合,而且这些子集个互不相交的子集合,而且这些子集中的每一个本身又是一棵树,也称为根的子树。中的每一个本身又是一棵树,也称为根的子树。J JI IA AC CB BD DH HG GF
14、FE EK KL LM M树的实例树的实例树可表示具有分枝结构关系的对象树可表示具有分枝结构关系的对象例例1家族族谱家族族谱设某家庭有设某家庭有13个成员个成员A、B、C、D、E、F、G、H、I、J、K、L、M,他们之间的关系可用树表示:,他们之间的关系可用树表示:J JI IA AC CB BD DH HG GF FE EK KL LM M计算机中树是常用的数据组织形式计算机中树是常用的数据组织形式 尽管有些应用中数据元素之间并不存在分支结构关系,但尽管有些应用中数据元素之间并不存在分支结构关系,但为了便于管理和使用数据,将它们用树的形式来组织。为了便于管理和使用数据,将它们用树的形式来组织
15、。例例2计算机的文件系统计算机的文件系统不论是不论是DOS文件系统还是文件系统还是window文件系统,所有的文件都是用文件系统,所有的文件都是用树的形式来组织的。树的形式来组织的。文件夹文件夹1 1 文件夹文件夹n n 文件文件1 1 文件文件2 2文件夹文件夹11 11 文件夹文件夹12 12 文件文件11 11 文件文件1212C C盘盘树的树的基本术语基本术语 树的结点:包含一个数据元素及若干指树的结点:包含一个数据元素及若干指向子树的分支;向子树的分支;孩子结点:结点的子树的根称为该结点孩子结点:结点的子树的根称为该结点的孩子,的孩子,B、C是是A的孩子;的孩子;双亲结点:双亲结点:
16、B结点是结点是A结点的孩子,则结点的孩子,则A结点是结点是B结点的双亲;结点的双亲;兄弟结点:同一双亲的孩子结点,兄弟结点:同一双亲的孩子结点,H、I、J互为兄弟;互为兄弟;J JI IA AC CB BD DH HG GF FE EK KL LM M树的树的基本术语基本术语结点的层次:根结点的层次定义为结点的层次:根结点的层次定义为1;根的孩子为第;根的孩子为第二层,依此类推;二层,依此类推;树的深度:树中所有结点的层次的最大值树的深度:树中所有结点的层次的最大值结点的度:结点子树的个数结点的度:结点子树的个数树的度:树的度:树中结点度的最大值。树中结点度的最大值。叶子结点:度为叶子结点:度
17、为0的结点;的结点;分枝结点:度不为分枝结点:度不为0的结点;的结点;J JI IA AC CB BD DH HG GF FE EK KL LM M4.2 4.2 二叉树二叉树 二叉树的定义二叉树的定义二叉树:二叉树:或为空树,或由根及两颗互不相交的左子树、右子树构或为空树,或由根及两颗互不相交的左子树、右子树构成,并且左、右子树本身也是二叉树。成,并且左、右子树本身也是二叉树。A A F F G G E E D D C C B B二叉树中每个二叉树中每个结点最多有两结点最多有两个子树;既:个子树;既:每个结点度小每个结点度小于等于于等于2;左、右子树不左、右子树不能颠倒能颠倒有有序树序树;(
18、a)(a)、(b)(b)是不同的二叉树,是不同的二叉树,(a)(a)的左子树有四个结点的左子树有四个结点,(b)(b)的左子树有两个结点的左子树有两个结点(a)(b)G G E E D D C C B B A A F F G G E E D D C C B B F FA A 二叉树的基本形态二叉树的基本形态(a)空树(b)只有根(c)右子树空(e)左子树空(d)左、右子树非空二叉树的性质二叉树的性质性质性质1:在二叉树的第在二叉树的第i层上至多有层上至多有2i-1个结点个结点(i1)。性质性质2:深度为深度为k的二叉树至多有的二叉树至多有2k-1个结点(个结点(k1)。性性质质3:对对任任意意
19、一一棵棵二二叉叉树树T,若若叶叶结结点点数数为为n0,而而其其度度为为2的的结点数为结点数为n2,则,则n0=n2+1。二叉树二叉树存储结构存储结构-二叉链表二叉链表二叉链表中每个结点包含三个域:数据域、左指针域、右指二叉链表中每个结点包含三个域:数据域、左指针域、右指针域针域 A A F F E E D D C C B B二叉链表图示二叉链表图示 D D A A B B C C E E F F 二叉树的遍历遍历遍历:按某种顺序访问二叉树的每个结点,而且每个结点仅被访按某种顺序访问二叉树的每个结点,而且每个结点仅被访问一次。问一次。访问:含义很广,可以是对结点的各种处理含义很广,可以是对结点的
20、各种处理,如修改结点数据、,如修改结点数据、输出结点数据。输出结点数据。二叉树的遍历方法二叉树的遍历方法 二叉树由根、左子树、右子树三部分组成 二叉树的遍历可以分解为:访问根,遍历左子树和遍历右子树令:L L:遍历左子树 T:访问根结点 R R:遍历右子树 约定先左后右,有三种遍历方法:T L L R R前序遍历、L L T R R中序遍历、L L R R T后序遍历。A A F F G G E E D D C C B B 前(先)序遍历(T L L R R)若二叉树非空(1)访问根结点;(2)前(先)序遍历左子树;(3)前(先)序遍历右子树;前(先)序遍历序列:A,B,D,B,D,E E,G
21、,G,C C,F F例:先序遍历右图所示的二叉树 (1)访问根结点A (2)前(先)序遍历左子树:即按 T L L R R 的顺序遍历左子树 (3)前(先)序遍历右子树:即按 T L L R R 的顺序遍历右子树 A A F F G G E E D D C C B B中序遍历(L L T R R)若二叉树非空(1)中序遍历左子树(2)访问根结点(3)中序遍历右子树 中序遍历序列:D,B,G,D,B,G,E E,A,C,FC,F例:中序遍历右图所示的二叉树 (1)中序遍历左子树:即按 L L T R R 的顺序遍历左子树 (2)访问根结点A (3)中序遍历右子树:即按 L L T R R 的顺序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 等级 基础 数据结构
限制150内