算法与数据结构复习课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《算法与数据结构复习课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 数据结构 复习 课件
- 资源描述:
-
1、2022-12-271一、绪论一、绪论 n(一)数据结构的研究对象:数据结构的研究对象:n数据结构数据结构的研究对象包括:数据的各种逻辑结构和存储结构以及对数据的各种操作。n(二)算法的五个特征:(二)算法的五个特征:n有穷性、确定性、可行性、输入、输出。n(三)算法的时间复杂度:(三)算法的时间复杂度:nT(n)=O(f(n)nT(n)叫算法的渐进时间复杂度,简称时间复杂度,O为数量级。2022-12-272n习题:习题:n1、写出下列算法的时间复杂度写出下列算法的时间复杂度。n(1)for(i=0;in;i+)n ci=i;n(2)for(i=0;im;i+)n for(j=0;jnext
2、=NULLnC)headnext=head D)head!=NULLn4带头结点的单链表带头结点的单链表head为空的判定条件是(为空的判定条件是()。)。nA)head=NULL B)headnext=NULLnC)headnext=head D)head!=NULLn5带头结点的循环单链表带头结点的循环单链表head为空的判定条件是(为空的判定条件是()。)。nA)head=NULL B)headnext=NULLnC)headnext=head D)head!=NULL2022-12-2711n6在单链表中,指针在单链表中,指针p指向元素为指向元素为x的结点,实现的结点,实现“删除删除x
3、的后继的后继”的语句是的语句是()。nA)p=p-next;B)p-next=p-next-next;nC)p-next=p;D)p=p-next-next;n7在长度为在长度为n的顺序表的第的顺序表的第i(1in+1)个位置上插个位置上插入一个元素,元素的移动次数为入一个元素,元素的移动次数为_。2022-12-2712三、栈和队列n(一)栈(一)栈n栈栈(Stack)是限制仅在表的一端进行插入和删除操作的线是限制仅在表的一端进行插入和删除操作的线性表。栈又称为后进先出的线性表,简称性表。栈又称为后进先出的线性表,简称LIFO线性表线性表。n顺序栈的顺序存储结构:顺序栈的顺序存储结构:n#d
4、efine maxsize 100/栈的最大容量栈的最大容量ntypedef structnn elemtp elemmaxsize;n int top;n sqstacktp;2022-12-2713n(二)队列(二)队列n队列(队列(queue)queue)是限定只能在表的一端进行插入,在是限定只能在表的一端进行插入,在表的另一端进行删除的线性表。表的另一端进行删除的线性表。n队尾队尾(rear)(rear)允许插入的一端;允许插入的一端;n队头队头(front)(front)允许删除的一端。允许删除的一端。n队列特点:先进先出队列特点:先进先出(FIFO)(FIFO)或后进后出或后进后出
5、(LILO)(LILO)。2022-12-2714n顺序队列的存储结构:顺序队列的存储结构:n#define maxsize 100n typedef structn n elemtp elemmaxsize;n int rear,front;n squeuetp;nrear指示队尾元素;指示队尾元素;nfront指示队头元素前一位置。指示队头元素前一位置。2022-12-2715n循环队列:循环队列:把队列设想成环形。把队列设想成环形。n为了区分队空、队满状态,少用一个元素空间:为了区分队空、队满状态,少用一个元素空间:frontfront所指单元不放元素。所指单元不放元素。n队空:队空:s
6、q.front=sq.rearsq.front=sq.rearn队满:队满:(sq.rear+1)%M=sq.front(sq.rear+1)%M=sq.front2022-12-2716n习题:习题:n1栈是限定在(栈是限定在()处进行插入或删除操作的线性表。)处进行插入或删除操作的线性表。n A)端点)端点 B)栈底)栈底 C)栈顶)栈顶 D)中间)中间n2栈的特点是(栈的特点是()。)。n A)先进先出)先进先出 B)后进先出)后进先出 n C)后进后出)后进后出 D)不进不出)不进不出n3顺序栈存储空间的实现使用(顺序栈存储空间的实现使用()存储栈元素。)存储栈元素。n A)链表)链表
7、 B)数组)数组 C)循环链表)循环链表 D)变量)变量 2022-12-2717n4顺序栈是空栈的条件是(顺序栈是空栈的条件是()。)。n A)top=0 B)top=1 n C)top=-1 D)top=mn5元素元素A、B、C、D依次进顺序栈后,栈底元素是依次进顺序栈后,栈底元素是()。)。n A)A B)B C)C D)Dn6队列是限定在(队列是限定在()处进行删除操作的线性表。)处进行删除操作的线性表。n A)端点)端点 B)队头)队头 C)队尾)队尾 D)中间)中间2022-12-2718n7队列的特点是(队列的特点是()。)。n A)先进先出)先进先出 B)后进先出)后进先出 n
8、 C)先进后出)先进后出 D)不进不出)不进不出n8容量是容量是10的循环队的头指针的位置的循环队的头指针的位置Sq-front为为2,则,则队头元素的位置是(队头元素的位置是()。)。n A)3 B)2 C)1 D)0n9循环队列循环队列Sq是空队列的条件是(是空队列的条件是()。)。nA)Sq-rear=Sq-front nB)(Sq-rear+1)%maxsize=Sq-frontnC)Sq-rear=0 nD)Sq-front=02022-12-2719n10循环队列循环队列Sq是满队列的条件是(是满队列的条件是()。)。nA)Sq-rear=Sq-front nB)(Sq-rear+
9、1)%maxsize=Sq-frontnC)Sq-rear=0 nD)Sq-front=0n11存放循环队列存放循环队列Sq元素的数组元素的数组data有有10个元素,个元素,nSq-front为为9,队头元素的位置在(,队头元素的位置在()。)。n A)10 B)9 C)1 D)0 2022-12-2720n12 用一维数组设计栈,初态是栈空,用一维数组设计栈,初态是栈空,top=0。现有。现有输入序列是输入序列是 a、b、c、d,经过,经过 push、push、pop、push、pop、push、pop、pop操作后,输出序列是操作后,输出序列是_。n13 设将设将a,b,c,d依次入栈依
10、次入栈,则执行则执行push(a),pop(),push(b),push(c),pop(),pop(),push(d),pop(),则出则出栈序列是栈序列是_。2022-12-2721五、树五、树n(一)树的基本概念(一)树的基本概念n结点的度结点的度结点拥有的子树数。结点拥有的子树数。n叶子叶子度为度为0 0的结点,也叫终端结点。的结点,也叫终端结点。n分支结点分支结点度不为度不为0 0的结点,也叫非终端结点。的结点,也叫非终端结点。n内部结点内部结点除根结点之外,分支结点也称为内部结点。除根结点之外,分支结点也称为内部结点。n树的度树的度一棵树中最大的结点度数。一棵树中最大的结点度数。n孩
11、子孩子结点子树的根称为该结点的孩子。结点子树的根称为该结点的孩子。n双亲双亲孩子结点的上层结点叫该结点的双亲。孩子结点的上层结点叫该结点的双亲。n兄弟兄弟同一双亲的孩子之间互成为兄弟。同一双亲的孩子之间互成为兄弟。2022-12-2722n(二)二叉树的概念和性质(二)二叉树的概念和性质n二叉树二叉树二叉树是结点的有限集合,这个集合二叉树是结点的有限集合,这个集合或者是空的,或者由一个根结点或两棵互不相交或者是空的,或者由一个根结点或两棵互不相交的称为左子树的和右子树的二叉树组成。的称为左子树的和右子树的二叉树组成。n满二叉树满二叉树深度为深度为k的满二叉树,是由的满二叉树,是由k 个结点的深
12、度为个结点的深度为K的二叉树。的二叉树。k-个结点是个结点是二叉树所具有的最大结点个数。二叉树所具有的最大结点个数。n完全二叉树完全二叉树具有具有n个结点、深度为个结点、深度为K的二叉树,的二叉树,当且仅当其所有结点对应于深度为当且仅当其所有结点对应于深度为k的满二叉树的满二叉树中编号由中编号由1到到n的那些结点时,该二叉树便是完全的那些结点时,该二叉树便是完全二叉树。二叉树。2022-12-2723n二叉树的性质:二叉树的性质:n性质性质1 在二叉树第在二叉树第i层上至多有层上至多有i-1 个结点个结点(i1)。)。n性质性质2 深度为深度为k的二叉树至多有的二叉树至多有k-1个结点个结点(
13、k1)。)。n性质性质3 包含包含n(n0)个结点的二叉树的分支边数为个结点的二叉树的分支边数为n-1。n性质性质4 对任何一颗二叉树对任何一颗二叉树T,如果其终端结点,如果其终端结点(叶子结点)数为(叶子结点)数为n0,度为,度为2的结点数为的结点数为n2,则则n0=n2+1。2022-12-2724(三)二叉树的链式存储结构(三)二叉树的链式存储结构PARENTLCHILDRCHILDLCHILD DATARCHILDLCHILD DATA PARENTRCHILD(a)(b)(c)二叉链表的类型定义:二叉链表的类型定义:struct bnodept datatype data;struc
14、t bnodept*lchild,*rchild;typedef struct bnodept*bitreptr;2022-12-2725(四)二叉树的三种递归遍历算法(四)二叉树的三种递归遍历算法n遍历遍历:是按一定的规则和次序走遍二叉树的所有结:是按一定的规则和次序走遍二叉树的所有结点,使每个结点都被访问一次,而且只被访问一次。点,使每个结点都被访问一次,而且只被访问一次。n遍历二叉树的目的:得到二叉树中各结点的一种线遍历二叉树的目的:得到二叉树中各结点的一种线性顺序,使非线性的二叉树线性化。性顺序,使非线性的二叉树线性化。n三种递归遍历算法:三种递归遍历算法:n(1 1)先根序遍历)先根
15、序遍历n(2 2)中根序遍历)中根序遍历n(3 3)后根序遍历)后根序遍历2022-12-2726写出下图所示完全二叉树的先序、中序、后序序列:写出下图所示完全二叉树的先序、中序、后序序列:2022-12-2727n习题:习题:n二叉树的结构声明如下,写出实现二叉树二叉树的结构声明如下,写出实现二叉树的先序、中序、后序遍历算法。的先序、中序、后序遍历算法。n二叉树结点的结构:二叉树结点的结构:nstruct treenodennchar data;nstruct treenode*lChild,*rChild;n;ntypedef struct treenode Tnode;2022-12-2
16、728n(1)先序遍历递归算法先序遍历递归算法nvoid preOrder(TNode*t)nn/略略nn(2)中序遍历递归算法中序遍历递归算法nvoid inOrder(TNode*t)nn/略略nn(3)后序遍历递归算法后序遍历递归算法nvoid postOrder(TNode*t)nn/略略n2022-12-2729(五)线索二叉树线索二叉树n线索线索:指向前驱或后继结点的指针称为线索。:指向前驱或后继结点的指针称为线索。n线索二叉树线索二叉树:加上了线索的二叉链表称为线索链:加上了线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树。表,相应的二叉树称为线索二叉树。n对二叉树进行某种
17、形式遍历使其变为线索二叉树对二叉树进行某种形式遍历使其变为线索二叉树的过程叫的过程叫线索化线索化,在遍历过程中,用线索取代空,在遍历过程中,用线索取代空指针即可。指针即可。n添加线索的方法添加线索的方法:首先要确定是何种:首先要确定是何种“序序”的线的线索化(先序、中序还是后序),只有空指针处才索化(先序、中序还是后序),只有空指针处才能加线索。结点无左孩子时,添加左线索,指向能加线索。结点无左孩子时,添加左线索,指向结点的前驱;结点无右孩子时,添加右线索,指结点的前驱;结点无右孩子时,添加右线索,指向结点的后继。向结点的后继。n习题习题:教材:教材P171 5.26P171 5.262022
18、-12-2730(六)哈夫曼树(六)哈夫曼树n哈夫曼树:哈夫曼树:又称最优二叉树,是带权路径最短的树。又称最优二叉树,是带权路径最短的树。n树的带权路径长度:树的带权路径长度:树中所有叶子结点的带权路径树中所有叶子结点的带权路径长度之和。长度之和。n哈夫曼树的构造方法:哈夫曼树的构造方法:n(1)根据给定的)根据给定的n个权值个权值w1,w2,.,wn构造构造n棵二棵二叉树的集合叉树的集合F=T1,T2,.,Tn;(2)在)在F中选取两棵根结点的权值为最小的树作为中选取两棵根结点的权值为最小的树作为左、右子树以构造一棵新的二叉树;左、右子树以构造一棵新的二叉树;(3)将新的二叉树加入到)将新的
19、二叉树加入到F中,删除原两棵根结中,删除原两棵根结点权值最小的树;点权值最小的树;(4)重复()重复(2)和()和(3)直到)直到F中只含一棵树为止,中只含一棵树为止,这棵树就是哈夫曼树。这棵树就是哈夫曼树。n 习题:习题:教材教材P172 5.322022-12-2731n习题:习题:n1在一棵具有五层的满二叉树中,结点总数为(在一棵具有五层的满二叉树中,结点总数为()。)。n A)31 B)32 C)33 D)16n2在一棵二叉树中,第在一棵二叉树中,第5层上的结点数最多为(层上的结点数最多为()。)。n A)8 B)15 C)16 D)32n3将一棵有将一棵有100个结点的完全二叉树从上
展开阅读全文