数据结构复习汇编课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数据结构复习汇编课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 复习 汇编 课件
- 资源描述:
-
1、数据结构数据结构韩萍n数据结构(Data Structure):是相互之间存在一种或多种特定关系的数据元素的集合。n数据结构分为逻辑结构和存储结构(物理结构)n顺序存储:n链式存储 a1 a2 a3a2 a1一一算法概念算法概念 对特定问题求解步骤的一种描述,是指令的有限序列,对特定问题求解步骤的一种描述,是指令的有限序列,每条指令表示一个或多个操作。每条指令表示一个或多个操作。:确定性:有穷性:可行性:输入:输出:可读性:健壮性:效率与低存储量需求正确性:算法的时间效率主要由两个因素决定:l所需处理问题的数据量大小,数据量大,所花费的时间就多;l在解决问题的过程中,基本操作的执行次数 时间复
2、杂度:算法中基本操作重复执行的次数是问题规模n的某个函数,T(n)=O(f(n)好的算法应该能够在数据量n增长的同时,函数T(n)的增长速度比较缓慢。常见函数的增长率常见函数的增长率n一个算法时间为O(1)的算法,它的基本运算执行的次数是固定的。总时间由一个常数(即零次多项式)来限界。一个时间为O(n2)的算法由一个二次多项式来限界。n以下六种计算算法时间的多项式是最常用的。关系为:n O(1)O(logn)O(n)n O(nlogn)O(n2)O(n3)n指数时间的关系为:O(2n)O(n!)O(nn)第二章一线性表:是n0个性质相同的数据元素的有限序列。线性表可记作(a1,a2,an)n
3、0基本操作:建立、存取、插入、删除、检索、分解、排序等。(a1,ai-1,ai,an)改变为 (a1,ai-1,e,ai,an)a1 a2 ai-1 ai ana1 a2 ai-1 ai ean表的长度加1二二基本运算基本运算1.在线性表第在线性表第i(1i n+1)个位置上插入元素)个位置上插入元素e注意:注意:C语言中的数组下标从语言中的数组下标从“0”开始,因此,若开始,因此,若L是是Sqlist类型的顺序表,则表中第类型的顺序表,则表中第i个元素是个元素是l.elemi-1。status insert_sq(Sqlist&L,elemtype e,int i)if(iL.length+
4、1)/检查检查i值是否合理值是否合理 return ERROR;if(L.length=ListSize)/判断是否溢出判断是否溢出 exit(overflow);for(j=L.length-1;j=i-1;j-)L.elemj+1=L.elemj;/腾出第腾出第i个位置个位置 L.elemi-1=e;/插入插入 L.length+;/当前表长加当前表长加1 return OK;这里的问题规模是表的长度,设它的值为这里的问题规模是表的长度,设它的值为n。该算。该算法的时间主要花费在循环的元素后移语句上,所需移法的时间主要花费在循环的元素后移语句上,所需移动元素的次数不仅依赖于表的长度,而且还
5、与插入位动元素的次数不仅依赖于表的长度,而且还与插入位置有关。置有关。i位置位置移动次数移动次数 1n 2n-1 in-i+1 n+10平均移动次数:平均移动次数:时间复杂度:时间复杂度:O(n)22)1(111111)1(nnnnninin(a1,ai-1,ai,ai+1,an)改变为 (a1,ai-1,ai+1,an)ai+1 an表的长度减1a1 a2 ai-1 ai ai+1 ana1 a2 ai-1 2.2.在线性表中删除第在线性表中删除第i i(1 i n1 i n)个元素,使)个元素,使status delete_sq(Sqlist&L,int i,elemtype&e)if(i
6、L.length)/检查i值是否合理return ERROR;e=L.elemi-1;/C下标从0开始 for(j=i;j=L.length-1;j+)L.elem j-1=L.elem j;/删除 L.length-;return OK;该算法的时间分析与插入算法相似,结点的移动次数也是由表该算法的时间分析与插入算法相似,结点的移动次数也是由表长长n和位置和位置i决定。决定。i位置位置移动次数移动次数 1n-1 2n-2 in-i n0平均移动次数:平均移动次数:时间复杂度:时间复杂度:O(n)212)1(111)(nnnnninin第三章 栈和队列栈和队列也可以被称作为操作栈和队列也可以被
7、称作为操作受限的线性表。受限的线性表。思考:假设有思考:假设有A,B,CA,B,C三个元素进三个元素进S S栈的顺序是栈的顺序是A,B,CA,B,C,写出所有可能的出栈序列。写出所有可能的出栈序列。CBAACBABCCABBACBCA1.栈属于加了限制条件的线性结构;栈属于加了限制条件的线性结构;2.栈是后进先出的线性表;栈是后进先出的线性表;3.进栈和出栈只能从栈顶进行;进栈和出栈只能从栈顶进行;4.栈中的元素个数可以是栈中的元素个数可以是0(空栈);(空栈);5.栈的元素的个数不能是无穷多个;栈的元素的个数不能是无穷多个;6.每个栈中的元素的类型相同每个栈中的元素的类型相同.栈的特性栈的特
8、性队列(队列(queuequeue)是一种只允许)是一种只允许在一端进行插入,而在另一端进行在一端进行插入,而在另一端进行删除的线性表,它是一种操作受限删除的线性表,它是一种操作受限的线性表。的线性表。3.2.1 3.2.1 队列的定义及其运算队列的定义及其运算a0 a1 a2 an-1frontrear依次 1 2 3 4 5 6 删除两个元素之后的头元素是?第四章第四章 串串 零个或多个字符组成的有限序列。一般记S=a1a2.an 其中,S是串名串名,单引号括起的字符序列是串值串值;2 2、串长、串长 串中所包含的字符个数3 3、空串、空串长度为零的串,它不包含任何字符。1 1、串、串4
9、4、空格串、空格串由一个或多个空格组成的串,其长度为串中空格字符的个数。第五章5.3 广义表的定义广义表的定义一、广义表一、广义表(General List)1.广义表中的元素即可以是单个元素(称为原子)广义表中的元素即可以是单个元素(称为原子)也可以是广义表(称为子表)。也可以是广义表(称为子表)。2.一般表示:一般表示:LS=(a1,a2,an)3.习惯上广义表名用大写字母,原子用小写字母习惯上广义表名用大写字母,原子用小写字母4.当当LS非空时,非空时,a1称为称为LS 的表头(的表头(head),其余),其余元素组成的表(元素组成的表(a2,an)称为表尾()称为表尾(tail)。)。
10、例:例:A=()B=(e)C=(a,(b,c,d)D=(A,B,C)E=(a,E)F=(a,b,(c,(d)广义表特点:广义表特点:允许递归,可共享子表允许递归,可共享子表元素不仅有先后次序,而且有层次关系元素不仅有先后次序,而且有层次关系元素的层次:是包括该元素的括号对数元素的层次:是包括该元素的括号对数表深:广义表中元素的最大层次表深:广义表中元素的最大层次二二广义表的存储结构(通常用链式)广义表的存储结构(通常用链式)广义表的扩展线性链表存储typedef struct glnodeint tag;/0 原子结点;1 子表结点union atomtype atom;/原子结点的值域 st
11、ruct glnode*hp;/子表表头指针struct glnode*next;/下一元素指针*glist;例:例:A=();B=(e);C=(a,(b,c,d);D=(A,B,C);E=(a,E)都设一附加表头结点都设一附加表头结点1 A1B0 e 1C0a10 b0 c0 d 11 11D10 a1E作业练习作业练习求下列广义表操作的结果:求下列广义表操作的结果:GetHead【(p,h,w)】;GetTail【(b,k,p,h)】;GetHead【(a,b),(c,d)】;GetTail【(a,b),(c,d)】;GetHead【GetTail【(a,b),(c,d)】GetTail【
12、GetHead【(a,b),(c,d)】GetHead【GetTail【GetHead【(a,b),(c,d)】GetTail【GetHead【GetTail【(a,b),(c,d)】第六章ABCDEFGHK例如:例如:先序序列:先序序列:中序序列:中序序列:后序序列:后序序列:A B C D E F G H KB D C A E H G K FD C B H K G F E A二叉树的遍历层次序列:层次序列:A B E C F D G H K5.3.2根据二叉树的遍历构造二叉树3 3结点的结点的5 5棵二叉树的棵二叉树的3 3种遍历序种遍历序列如表所示。存在情况列如表所示。存在情况:表 5.
13、1 5 棵二叉树的 3 种遍历序列 二叉树 遍历序列 图 5.7(a)图 5.7(b)图 5.7(c)图 5.7(d)图 5.7(e)先序遍历序列 ABC ABC ABC ABC ABC 中序遍历序列 BAC BCA ACB CBA ABC 后序遍历序列 BCA CBA CBA CBA CBA ABCABCABCABCCAB因此,对因此,对3 3种遍序序列有结论:种遍序序列有结论:(1 1)由先序遍历序列和中序遍历)由先序遍历序列和中序遍历序列能够唯一确定一棵二叉树。序列能够唯一确定一棵二叉树。(2 2)由后序遍历序列和中序遍历)由后序遍历序列和中序遍历序列能够唯一确定一棵二叉树。序列能够唯一
14、确定一棵二叉树。(3 3)由先序遍历序列和后序遍历)由先序遍历序列和后序遍历序列不能唯一确定一棵二叉树。序列不能唯一确定一棵二叉树。例如:已知二叉树BT的后序遍历序列为:CBEHGIFDA,中序遍历序列为:BCAEDGHFI,请构造这棵二叉树T。A ABCBCDEFDEFGHIGHIA ADEFDEFGHIGHIB BC CFGHFGHI IA AB BC CD DE EGHGHA AB BC CD DE EF FI IA AB BC CD DE EF FH HG GI I由中序遍历序列和后序遍历序列构造二叉树的过程示意由中序遍历序列和后序遍历序列构造二叉树的过程示意平衡二叉树或者是一棵空树,
15、或者是具有下列性质的二叉排序树:(1)左、右子树都是平衡二叉树;(2)左、右子树高度差的绝对值=1。若把左子树与右子树高度之差称为结点x的平衡因子(balance factor),用bf(x)表示。则由平衡二叉树定义知:Bf(x)=x左子树深度-x右子树深度1.平衡二叉树的定义91000065504741853060727842-330-202141853060727842-1110010a.非平衡二叉树非平衡二叉树 b.平衡二叉树平衡二叉树 所有结点的平衡因子只能所有结点的平衡因子只能取取-1-1,0 0,1 1三个值之一。三个值之一。6.2 堆排序堆是一棵顺序存储的完全二叉树,堆是一棵顺序
16、存储的完全二叉树,若每个结点的关键字都不小(大)于其若每个结点的关键字都不小(大)于其孩子结点的关键字,则称为大(小)根孩子结点的关键字,则称为大(小)根堆。堆。968338112791236854724305391堆排序的基本思想是:首先,按堆排序的基本思想是:首先,按堆的定义将堆的定义将R1.nR1.n调整为堆(这个过调整为堆(这个过程称为初始建堆),交换程称为初始建堆),交换R1R1和和RnRn;然后,将然后,将R1.n-1R1.n-1调整为堆,交换调整为堆,交换R1R1和和Rn-1Rn-1;如此反复进行,直到;如此反复进行,直到交换了交换了R1R1和和R2R2为止。为止。6.3.1 哈
17、夫曼树的定义哈夫曼树的定义设二叉树具有设二叉树具有n n个带权值的叶子结个带权值的叶子结点,那么从根结点到各个叶子结点的点,那么从根结点到各个叶子结点的路径长度路径长度l li i与相应结点权值与相应结点权值w wi i的乘积的乘积的和,称为二叉树的带权路径长度,的和,称为二叉树的带权路径长度,记作:记作:WPL=1WPL=13+33+33+23+22+42+41=201=20。n1iiilwWPL 4 2 1 3 6.3.2 哈夫曼树的构造哈夫曼树的构造(1 1)由给定的)由给定的n n个权值个权值WW1 1,W,W2 2,W,Wn n 构造构造n n棵只有一个叶子结棵只有一个叶子结点的二叉
18、树,从而得到一个二叉树的集点的二叉树,从而得到一个二叉树的集合合F=TF=T1 1,T,T2 2,T,Tn n。(2 2)在)在F F中选取根结点的权值最小中选取根结点的权值最小和次小的两棵二叉树作为左、右子树构和次小的两棵二叉树作为左、右子树构造一棵新的二叉树,新二叉树根结点的造一棵新的二叉树,新二叉树根结点的权值为其左、右子树根结点权值之和。权值为其左、右子树根结点权值之和。(3 3)在集合)在集合F F中删除作为左、右子中删除作为左、右子树的两棵二叉树,并将新建立的二叉树树的两棵二叉树,并将新建立的二叉树加入到集合加入到集合F F中。中。(4 4)重复()重复(2 2)、()、(3 3)
19、两步,当)两步,当F F中只剩下一棵二叉树时,这棵二叉树便中只剩下一棵二叉树时,这棵二叉树便是所要建立的哈夫曼树。是所要建立的哈夫曼树。注:如此建造的二叉树,没有度为注:如此建造的二叉树,没有度为1 1的结点。如有的结点。如有n n个叶子,必有个叶子,必有m=2n-1m=2n-1个结点。个结点。9例如:已知权值 W=5,6,2,9,7 56275276976713952767139527952716671329WPL=(6+7+9)*2+(5+2)*3=22*2+7*3=44+21=65注意:1.只算叶子2.分层计算3.路径长为层数减1 快速远距传输电文时,为使电文尽量短,采用不等长编码,且使
20、用频高的字符用较短的码。并且使任何一个字符的编码都不是同一字符集中另一个字符的编码的前缀。利用赫夫曼树可以构造出一种最优前缀编码使所传电文的总长度最短,这种编码就是赫夫曼编码。6.3.3 赫夫曼编码例:已知某通信息流只用8种字符,出现频率为0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11,试设计赫夫曼编码。设W=(5,29,7,8,14,23,3,11),n=8,则m=15.3511237142911111110000000823 00 29 1011 01014 1105 0113 01117 11108 1111哈夫曼树和编码的代码实现序号权重父号左子右子17
21、2193246532637218109101112131415W=7,19,2,6,32,3,21,10N=8 m=2*8-1=159953610101194111117181212281011131340271414601251515100131410010210300000400015016000017118001112345678第7章 图 7.1 图的基本概念 7.1.1 图的定义图的定义图是一种非线性结构图是一种非线性结构,它比树形结它比树形结构更复杂构更复杂.图中的数据元素之间是多对图中的数据元素之间是多对多关系多关系,每一个元素都可能与其他元素每一个元素都可能与其他元素有关有关.
22、图是由一个非空的顶点集合和一个图是由一个非空的顶点集合和一个描述顶点之间关系即边(或者弧)的集描述顶点之间关系即边(或者弧)的集合组成合组成.7.2 图的存储结构 7.2.1 邻接矩阵邻接矩阵邻接矩阵是表示顶点之间相邻关系的邻接矩阵是表示顶点之间相邻关系的矩阵。设矩阵。设G=(V,E)G=(V,E)是具有是具有n n个顶点的图,则个顶点的图,则G G的邻接矩阵是的邻接矩阵是n n阶方阵定义阶方阵定义A A:若若G G是网,则邻接矩阵可定义为:是网,则邻接矩阵可定义为:0 其他情况 Aij=0 (i,j)VR1 (i,j)VRBACDFE例如例如:矩阵的元素为矩阵的元素为ABCDEFABCDEF
23、无向图无向图-对称矩阵,半对称矩阵,半存即可,节省空间。每行存即可,节省空间。每行(列列)数字和即是顶点的度数字和即是顶点的度有向图的邻接矩有向图的邻接矩阵为非对称矩阵阵为非对称矩阵ABECD0 1 0 0 10 0 1 0 00 0 0 1 01 1 0 0 00 0 1 0 0ABCDEABCDE行和为出度行和为出度列和为入度列和为入度有向网的邻接矩有向网的邻接矩阵为非对称矩阵阵为非对称矩阵ABECDABCDEABCDE121731 57.3.2 深度优先搜索深度优先搜索深度优先搜索的基本思想是:深度优先搜索的基本思想是:从图从图G G中某个顶点中某个顶点vivi出发,访出发,访问问viv
24、i,然后选择一个与,然后选择一个与vivi相邻且没相邻且没被访问过的顶点被访问过的顶点v v访问,再从访问,再从v v出发出发选择一个与选择一个与v v相邻且未被访问的顶相邻且未被访问的顶点点vjvj访问,依次继续。访问,依次继续。如果当前已访问过的顶点的如果当前已访问过的顶点的所有邻接顶点都已被访问,则回所有邻接顶点都已被访问,则回退到已被访问的顶点序列中最后退到已被访问的顶点序列中最后一个拥有未被访问的相邻顶点一个拥有未被访问的相邻顶点w w,从从w w出发按同样方法向前遍历。直出发按同样方法向前遍历。直到图中所有顶点都被访问。到图中所有顶点都被访问。从图中某个顶点顶点V0 出发,访问此顶
25、点,然后依次从依次从V0的的各个未被访问各个未被访问的的邻接点出发深度优先搜索遍历图邻接点出发深度优先搜索遍历图,直至图中所有都被访问到。为确定每一个结点是否被访问,必须设置访问标志。一、连通图的深度优先搜索遍历一、连通图的深度优先搜索遍历achdekf8234570F F F F F F F F F0 1 2 3 4 5 6 7 8TTTT TT Tach d kfe achkfed访问标志访问标志:访问次序访问次序:例如例如:achdkfe7.4 最小生成树在一个无向连通图在一个无向连通图G G中,如果取它中,如果取它的全部顶点和一部分边构成一个子图的全部顶点和一部分边构成一个子图GG,即
展开阅读全文