数据结构期末直播复习课资料.pdf
《数据结构期末直播复习课资料.pdf》由会员分享,可在线阅读,更多相关《数据结构期末直播复习课资料.pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章第一章1 1、数据结构是、数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。数据结构数据结构(Data Structure)(Data Structure):相互之间存在一种或多种特定关系的数据元素的集合。2 2、数据结构的形式定义:、数据结构的形式定义:二元组 Data_Structure=(D,S)其中,D 是数据元素的有限集,S 是 D 上关系的有限集。3 3、数据元素之间关系的映像:、数据元素之间关系的映像:、顺序映像(顺序存储结构):以相对的存储位置表示后继关系。2、非顺序映像(链式存储结构):借助指针元素存储地址的指针表示数据元素之
2、间的逻辑关系。任何一个算法的设计取决于数据任何一个算法的设计取决于数据(逻辑逻辑)结构,其实现取决于物理结构。结构,其实现取决于物理结构。4、算法的定义:算法的定义:对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。特性:特性:有穷性、确定性、可行性、输入、输出5 5、算法的评价算法的评价衡量算法优劣的标准衡量算法优劣的标准正确性正确性(correctness):(correctness):满足具体问题的需求满足具体问题的需求可读性可读性(readability)(readability):易读、易理解:易读、易理解健壮性健壮性(robustness):(ro
3、bustness):当输入数据非法时,算法能够做出反应或进行处理当输入数据非法时,算法能够做出反应或进行处理效率与低存储量效率与低存储量:执行时间短、存储空间小执行时间短、存储空间小第二章第二章1 1、线性表是一种最简单的线性结构。、线性表是一种最简单的线性结构。线性结构线性结构 是一个数据元素的有序(次序)关系是一个数据元素的有序(次序)关系特点:存在唯一的一个特点:存在唯一的一个“第一个第一个”的数据元素;存在唯一的一个的数据元素;存在唯一的一个“最后一个最后一个”的数据元素;除第一个数据元素外,的数据元素;除第一个数据元素外,均有唯一的前驱;除最后一个数据元素外,均有唯一的后继均有唯一的
4、前驱;除最后一个数据元素外,均有唯一的后继2 2、线性表类型的实现、线性表类型的实现顺序映像顺序映像定义:用一组地址连续的存储单元依次存放线性表中的数据元素。定义:用一组地址连续的存储单元依次存放线性表中的数据元素。以以“存储位置相邻存储位置相邻”表示有序对表示有序对 ,则有:,则有:LOCLOC(ai ai)=)=LOCLOC(ai ai-1)+-1)+l l其中其中l l是一个数据元素所占存储是一个数据元素所占存储量量LOCLOC(ai ai)=LOCLOC(a a1)1)+(i i-1-1)l l特点:特点:1 1、实现逻辑上相邻、实现逻辑上相邻物理地址相邻物理地址相邻 2 2、实现随机
5、存取、实现随机存取3 3、若若 假假 定定 在在 线线 性性 表表 中中任任 何何 一一 个个 位位 置置 上上进进 行行插插 入入 的的 概概 率率 都都 是是相相 等等的的,则则 移移 动动 元元 素素的的 期期望望 值值 为为:1n1Eis(ni1)n1i1n2若若 假假 定定 在在 线线 性性 表表 中中 任任 何何 一一 个个 位位 置置 上上 进进 行行 删删 除除 的的 概概 率率 都都 是是 相相 等等 的的,则则 移移 动动 元元 素素 的的 期期 望望 值值 为为:1nn1Edl(ni)ni124 4、线性表类型的实现线性表类型的实现链式映像链式映像线性链表线性链表特点:用
6、一组地址任意的存储单元存放线性表中的数据元素。特点:用一组地址任意的存储单元存放线性表中的数据元素。5 5、在单链表中第、在单链表中第 i i 个结点之前进行插入的基本操作为:找到线性表中第个结点之前进行插入的基本操作为:找到线性表中第 i-1i-1 个结点,然后修改其指向后继的指个结点,然后修改其指向后继的指针。针。s=(LinkList)malloc(sizeof(LNode);/s=(LinkList)malloc(sizeof(LNode);/生成新结点生成新结点s-data=e;s-next=p-next;s-data=e;s-next=p-next;p-next=s;/p-next
7、=s;/插入插入在单链表中删除第在单链表中删除第 i i 个结点的基本操作为个结点的基本操作为:找到线性表中第找到线性表中第 i-1i-1 个结点,修改其指向后继的指针。个结点,修改其指向后继的指针。q=p-next;q=p-next;p-next=q-next;p-next=q-next;e=q-data;free(q);free(q);5 5、循环链表:最后一个结点的指针域的指针又指回第一个结点的链表。循环链表:最后一个结点的指针域的指针又指回第一个结点的链表。和单链表的差别仅在于:和单链表的差别仅在于:判别链表中最后一个结点的条件不再是“后继是否为空”判别链表中最后一个结点的条件不再是“
8、后继是否为空”,而是“后继是否为头结点”,而是“后继是否为头结点”。6 6、双向链表的操作特点:双向链表的操作特点:1 1、“查询查询”和单链表相同;和单链表相同;2 2、“插入插入”和和“删除删除”时需要同时修改两个方向上的指针时需要同时修改两个方向上的指针1“插入插入”:s-next=p-next;s-next=p-next;p-next=s;p-next=s;s-next-prior=s;s-next-prior=s;s-prior=p;s-prior=p;(s s 是插入的结点)是插入的结点)删除:删除:p-next=p-next-next;p-next=p-next-next;p-n
9、ext-prior=p;p-next-prior=p;(要删除的是(要删除的是 p p 的下一个结点)的下一个结点)第三章第三章1 1、栈、队列的特点:、栈、队列的特点:从数据元素间的逻辑关系看从数据元素间的逻辑关系看 是线性表是线性表从操作方式与种类看从操作方式与种类看 不同于线性表:栈与队列是操作受限的线性表不同于线性表:栈与队列是操作受限的线性表2 2、栈的基本概念、栈的基本概念 栈栈-是限制仅在线性表的一端进行插入和删除运算的线性表。是限制仅在线性表的一端进行插入和删除运算的线性表。栈顶(栈顶(TOPTOP)-允许插入和删除的一端。允许插入和删除的一端。栈底(栈底(bottom)-bo
10、ttom)-不允许插入和删除的一端不允许插入和删除的一端。空栈空栈-表中没有元素。表中没有元素。栈栈-又称为后进先出的线性表又称为后进先出的线性表3 3、栈中元素的特性:栈中元素的特性:1 1、具有线性关系、具有线性关系 2 2、后进先出、后进先出4 4、栈的进栈出栈规则:栈的进栈出栈规则:a)a)按序进栈:有按序进栈:有 n n 个元素个元素 1 1,2 2,,n,n,它们按,它们按 1,2,1,2,n n 的次序进栈的次序进栈(i(i 进栈时,进栈时,1(i-1)1(i-1)应该已经进栈应该已经进栈);b)b)栈顶出栈:栈底最后出栈;栈顶出栈:栈底最后出栈;c)c)时进时出:元素未完全进栈
11、时,即可出栈。时进时出:元素未完全进栈时,即可出栈。5 5、栈的表示与实现、栈的表示与实现顺序栈顺序栈 即栈的顺序存储结构:一组地址连续的存储单元依次存放自栈底到栈顶的数据元素。即栈的顺序存储结构:一组地址连续的存储单元依次存放自栈底到栈顶的数据元素。1 1、附设一个栈底指针附设一个栈底指针 basebase,总是指向栈底。,总是指向栈底。2 2、附设一个栈顶指针附设一个栈顶指针 toptop。空栈时,。空栈时,top=basetop=base;非空栈时,总是指向栈顶元素;非空栈时,总是指向栈顶元素1 1 的位置。的位置。插入一个栈顶元素,指针插入一个栈顶元素,指针 toptop 增增 1 1
12、;删除一个栈顶元素,指针删除一个栈顶元素,指针 toptop 减减 1 1;非空栈中的栈顶指针始终在栈顶元素的下一个位置上非空栈中的栈顶指针始终在栈顶元素的下一个位置上链栈链栈:注意:注意:链栈中指针的方向指向前驱结点!链栈中指针的方向指向前驱结点!6 6、队列、队列队列:只允许在表的一端进行插入,而在表的另一端进行删除的线性表。队列:只允许在表的一端进行插入,而在表的另一端进行删除的线性表。队尾队尾(rear)(rear)允许插入的一端允许插入的一端队头队头(front)(front)允许删除的一端允许删除的一端队列特点:先进先出队列特点:先进先出(FIFO)(FIFO)7 7、队列类型的实
13、现、队列类型的实现链队列链队列队列的链式表示和实现队列的链式表示和实现顺序队列顺序队列队列的顺序表示和实现队列的顺序表示和实现用一组连续的存储单元依次存放队列中的元素用一组连续的存储单元依次存放队列中的元素8 8、顺序队列运算时的头、尾指针变化、顺序队列运算时的头、尾指针变化设两个指针设两个指针 front,rear,front,rear,约定:约定:rearrear 指示队尾元素;指示队尾元素;frontfront 指示队头元素前一位置初值指示队头元素前一位置初值 front=rear=0front=rear=0空队列条件:空队列条件:Q.front=Q.rearQ.front=Q.rear
14、队列满:队列满:Q.rear-Q.front=mQ.rear-Q.front=m入队列:入队列:Q.baserear+=x;Q.baserear+=x;出队列:出队列:x=Q.base+front;x=Q.base+front;存在问题:设数组维数为存在问题:设数组维数为 MM,则:,则:当当 rear-front=mrear-front=m时,再有元素入队发生溢出时,再有元素入队发生溢出真溢出真溢出当当 rearrear 已指向队尾,但队列前端仍有空位置时,再有元素入队发生溢出已指向队尾,但队列前端仍有空位置时,再有元素入队发生溢出假溢出!假溢出!29 9、循环队列:将数组首尾相接(即:循环
15、队列:将数组首尾相接(即:base0base0连在连在 basem-1basem-1之后之后)。入入/出队列运算出队列运算利用利用“模运算模运算”,则:,则:入队:入队:Q.rear=(Q.rear+1)%mQ.rear=(Q.rear+1)%m出队:出队:Q.front=(Q.front+1)%mQ.front=(Q.front+1)%m队满和队空判断条件:队满和队空判断条件:少用一个元素空间:少用一个元素空间:队空:队空:Q.rear=(Q.front)Q.rear=(Q.front)队满:队满:(Q.rear+1)%m=Q.front(Q.rear+1)%m=Q.front1010、栈和
16、队列是限定插入和删除只能在表的“端点”进行的线性表。栈和队列是限定插入和删除只能在表的“端点”进行的线性表。a)a)栈具有栈具有“后进先出后进先出”的特性;的特性;b)b)队列具有队列具有“先进先出先进先出”的特性。的特性。11、栈的链式存储不需头结点。栈的链式存储不需头结点。课后作业课后作业1.1.简述以下算法的功能简述以下算法的功能(栈和队列的元素类型均为栈和队列的元素类型均为 int)int)void algo3(Queue&Q)void algo3(Queue&Q)Stack S;int d;Stack S;int d;InitStack(S);InitStack(S);while(!
17、QueueEmpty(Q)while(!QueueEmpty(Q)DeQueue(Q,d);Push(S,d);DeQueue(Q,d);Push(S,d);while(!StackEmpty(S)while(!StackEmpty(S)Pop(S,d);EnQueue(Q,d);Pop(S,d);EnQueue(Q,d);第六章第六章本章小结本章小结二叉树的结构特性,各性质相应的证明方法。二叉树的结构特性,各性质相应的证明方法。二叉树的各种存储结构的特点及适用范围。二叉树的各种存储结构的特点及适用范围。遍历二叉树是二叉树各种操作的基础,遍历的具体算法与所采用的存储结构有关。遍历二叉树是二叉树
18、各种操作的基础,遍历的具体算法与所采用的存储结构有关。树和森林与二叉树的转换。树和森林与二叉树的转换。最优二叉树的特性,掌握建立最优树和哈夫曼编码的方法。最优二叉树的特性,掌握建立最优树和哈夫曼编码的方法。-、树的定义、树的定义1 1、树型结构:、树型结构:(非线性结构)至少存在一个数据元素有两个或两个以上的直接前驱(非线性结构)至少存在一个数据元素有两个或两个以上的直接前驱(或直接后继或直接后继)元素的数据结元素的数据结构。构。树的定义:是树的定义:是 n n(n n0)0)个结点的有限集合个结点的有限集合 T T,对于任意一棵非空树,它满足:有且仅有一个特定的称为根,对于任意一棵非空树,它
19、满足:有且仅有一个特定的称为根(root)(root)的结点;当的结点;当 n n1 1 时,其余结点可分为时,其余结点可分为 m m(m(m0)0)个互不相交的有限集个互不相交的有限集 T1T1,T2T2,.,T Tm m,其中每个集合本身又是,其中每个集合本身又是一棵树,称为根的子树。上述树的定义是一个递归定义。一棵树,称为根的子树。上述树的定义是一个递归定义。2 2、基本术语、基本术语结点:包含一个数据元素及若干指向其子树的分支。结点的度:结点拥有的子树数。叶子结点:包含一个数据元素及若干指向其子树的分支。结点的度:结点拥有的子树数。叶子(或终端或终端)结点:度为结点:度为零的结点。分支
20、零的结点。分支(或非终端或非终端)结点:度大于零的结点结点:度大于零的结点树的度:树中所有结点的度的最大值树的度:树中所有结点的度的最大值结点的层次:结点的层次:根结点的层次为根结点的层次为 1 1,第第 l l 层的结点的子树的根结点的层次为层的结点的子树的根结点的层次为 l l+1+1。树的深度:树的深度:树中叶子结点所在的最大层树中叶子结点所在的最大层次。次。任何一棵非空树是一个二元组任何一棵非空树是一个二元组 Tree=(rootTree=(root,F)F)其中:其中:rootroot 被称为根结点被称为根结点 F F 被称为子树森林被称为子树森林二、二叉树二、二叉树31、二叉树的定
21、义是二叉树的定义是 n n(n n=0)=0)个结点的有限集合,它或为空树个结点的有限集合,它或为空树(n n=0)=0),或由一个根结点和至多两棵称为根的左子树,或由一个根结点和至多两棵称为根的左子树和右子树的互不相交的二叉树组成。注:二叉树中不存在度大于和右子树的互不相交的二叉树组成。注:二叉树中不存在度大于2 2 的结点,的结点,并且二叉树的子树有左子树和右子树并且二叉树的子树有左子树和右子树之分。之分。2 2、二叉树的五种基本形态:二叉树的五种基本形态:空树空树只含根结点只含根结点右子树为空树右子树为空树左子树为空树左子树为空树左右子树均不为空树左右子树均不为空树3 3、二叉树的性质、
22、二叉树的性质性质性质 1 1:在二叉树的第:在二叉树的第 i i 层上至多有层上至多有 2 2i i-1-1 个结点个结点(i(i1)1)。其中。其中 2 2i i-1-1 为为 2 2 的的 i-1i-1 次方次方性质性质 2 2:深度为:深度为 k k 的二叉树上至多含的二叉树上至多含 2 2k k-1-1 个结点个结点(k(k1)1)。其中。其中 2 2k k-1-1 为为 2 2 的的 k k 次方减一次方减一性质性质 3 3:对任何一棵二叉树,若它含有:对任何一棵二叉树,若它含有 n n0 0 个叶子结点、个叶子结点、n n2 2 个度为个度为 2 2 的结点,则必存在关系式:的结点
23、,则必存在关系式:n n0 0=n=n2 2+1 1。证明:证明:设二叉树上结点总数设二叉树上结点总数 n=nn=n0 0+n+n1 1+n+n2 2,二叉树上分支总数二叉树上分支总数 b=nb=n1 1+2 2n n2 2,而而 b=nb=n-1-1=n=n0 0+n+n1 1+n+n2 2 1 1由,由,n n0 0=n=n2 2+1 1。除根结点外,其余结点都有一个分支进入,设除根结点外,其余结点都有一个分支进入,设 b b 为分支总数,则为分支总数,则 n n=b b+1+1性质性质 4 4:具有:具有 n n 个结点的完全二叉树的深度为个结点的完全二叉树的深度为 log log2 2
24、n n +1 1。其中其中 log log2 2n n 为不大于为不大于 log2nlog2n 的最大整数的最大整数性质性质 5 5:若对含:若对含 n n 个结点的完全二叉树从上到下且从左至右进行个结点的完全二叉树从上到下且从左至右进行 1 1 至至 n n 的编号,则对完全二叉树中任意一个的编号,则对完全二叉树中任意一个编号为编号为 i i 的结点:的结点:(1)(1)若若 i i=1=1,则该结点是二叉树的根,无双亲,否则,编号为,则该结点是二叉树的根,无双亲,否则,编号为 i i/2/2 的结点为其双亲结点;的结点为其双亲结点;(2)(2)若若 2 2i i n n,则该结点无左孩子,
25、否则,编号为,则该结点无左孩子,否则,编号为 2 2i i 的结点为其左孩子结点;的结点为其左孩子结点;(3)(3)若若 2 2i i+1+1n n,则该结点无右孩子结点,否则,编号为,则该结点无右孩子结点,否则,编号为 2 2i i+1+1 的结点为其右孩子结点。的结点为其右孩子结点。4 4、两类特殊的二叉树:两类特殊的二叉树:满二叉树:指的是深度为满二叉树:指的是深度为 k k 且含有且含有 2 2k k-1-1 个结点的二叉树。其中个结点的二叉树。其中 2 2k k-1-1 为为 2 2 的的 k k 次方减一次方减一特点:是每一层上的结点数都是最大结点数。特点:是每一层上的结点数都是最
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 期末 直播 复习 资料
限制150内