复习.

Slides:



Advertisements
Similar presentations
1.2 应用举例 ( 一 ). 复习引入 B C A 1. 什么是正弦定理? 复习引入 B C A 1. 什么是正弦定理? 在一个三角形中,各边和它所对 角的正弦的比相等,即.
Advertisements

第三章 蒙太奇与长镜头 20世纪20年代,前苏联电影理论家谢尔盖·爱森斯坦以感性思维和理性思维的辩证法为依据,提出了系统研究电影特性的美学理论和实践原则,即蒙太奇理论,这一理论后来也泛指有关剪辑和分镜头的理论。 爱森斯坦之外,库里肖夫、普多夫金、维尔托夫等人对蒙太奇理论做出了重要贡献。前苏联蒙太奇学说体系中,以爱森斯坦的“冲突论”和普多夫金的“组合论”最具纲领性。
英雄聯盟 報告者:莊迺盛 老 師:阿昌(小腸8公分).
每节一经典 用系统的观点观察问题 总体设计,逐步求精 计算机科学学院 王小明 (博士/教授/博士生导师)
主讲:计算机工程学院 李兰 答疑地点:主教学楼B区213
计算机软件技术基础 数据结构与算法(4).
数据结构——树和二叉树 1/96.
第六章 树和二叉树.
第5章 树( Tree )和二叉树 5.1 树的基本概念 5.2 二叉树 5.3 遍历二叉树和线索二叉树 5.4 树和森林
CH6 树和二叉树 6.1 树的定义和基本术语 6.2 二叉树 6.3 遍历二叉树和线索二叉树 6.4 树和森林
第八章 查找.
数据结构 第六章 树与二叉树 深圳大学计算机系 蔡茂国.
第五章 树 东南大学计算机学院 方效林 本课件借鉴了清华大学殷人昆老师 和哈尔滨工业大学张岩老师的课件.
第十章 内部排序 10.1 概述 10.2 插入排序 直接插入排序 其他插入排序 希尔排序
[聚會時,請將傳呼機和手提電話關掉,多謝合作]
第8章 查找 数据结构(C++描述).
第7章 图论基础与应用 PART A 《可视化计算》.
[聚會時,請將傳呼機和手提電話關掉,多謝合作]
第四章 计算科学教学计划与课程体系 4.1 计算科学(专业)的培养规格和目标
第六章 树和二叉树 6.1 树的定义和基本术语 6.2 二叉树 6.3 遍历二叉树和线索二叉树 6.4 树和森林 6.6 赫夫曼树及其应用.
Chapter 7 Search.
Chapter 5 Tree & Binary Tree
第8章 圖形結構(Graphs) 8-1 圖形的基本觀念 8-2 圖形的表示法 8-3 圖形的走訪 8-4 擴張樹
第八章 图 图的基本概念 图的存储结构 图的遍历与连通性 最小生成树 最短路径 活动网络.
数 据 结 构 Ch.6 树 计 算 机 学 院 肖明军
第12章 樹狀搜尋結構 (Search Trees)
第六章 二叉树和树 6.1树的基本概念 6.2二叉树 6.3二叉树遍历 6.4线索二叉树 6.5树和森林 6.6树的应用(霍夫曼树及其编码)
第 12 章 交流電源 …………………………………………………………… 12-1 單相電源 12-2 單相三線式 ※ 12-3 三相電源.
线性表小结 元素之间的线性关系 顺序表 顺序表:元素相邻存储 单链表:后继指针链接 一维数组 给定下标随机存取
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
第6章 图 6.2图的存储结构 6.3图的遍历 6.4图的连通性 6.5 最短路径 6.6 AOV网与拓扑排序 6. 7 AOE网与关键路径
第九章 查找 2018/12/9.
本章重点难点 重点:顺序查找、二分查找、二叉排序树查找以及散列表查找的基本思想和算法实现。
第三章 栈和队列 3.1 栈 3.2 栈的应用举例 3.3 栈与递归的实现 3.4 队列.
第3章 栈和队列(一).
§7.4.2 最小生成树( Minimum Spanning Tree)
教 师:曾晓东 电 话: E_mail: 计算机软件技术基础 教 师:曾晓东 电 话: E_mail:
陈海明 副教授 信息学院 计算机系 电子信息类非计算机专业选修课 程序设计实践 陈海明 副教授 信息学院 计算机系
第7章 树和二叉树 7.1 树 7.2 二叉树 7.3 以结点类为基础的二叉树设计 7.4 二叉树类 7.5 二叉树的分步遍历
数据结构 第9章 查找 什么是查找?? 静态查找 动态查找 哈希表 数据结构.
6.6 Huffman树及其应用 王 玲.
第九章 查找 2019/2/16.
数据结构与数据库 习题课(2) 2016年11月25日.
資料結構 第4章 堆疊.
数据结构 第八章 查找.
引例 问题1 从甲、乙、丙3名同学中选出2名参加某天的一项活动,其中1名同学参加上午的活动,1名同学参加下午的活动,有多少种不同的方法?
严蔚敏、吴伟民编著 清华大学出版社 学习网站:
10.2 排列 2006年4月6日.
练习: 由三个不同的英文字母和三个不同的阿拉伯数字组成一个六位号码(每位不能重复),并且3个英文字母必须合成一组出现,3个阿拉伯数字必须合成一组出现,一共有多少种方法?
§3-4三角形的邊角關係 重點:三角形邊角間的不等關係 (1)三角形任意兩邊和大於第三邊 (2)三角形任意兩邊差小於第三邊
数据结构概论 第7章 图 董黎刚 浙江工商大学信电学院 2019年4月8日.
算法设计复习 内容提要: 算法设计思想回顾(递归和分治、动态规划、贪心算法、回溯法、分支限界法) 经典例子讲解 2019/4/9.
§1 图与网络的基本概念 §2 树图与最小生成树 §3 最短路问题 §4 最大流问题 §5 最小费用最大流问题
第六章 树和二叉树 学习要点 理解树的定义和基本术语,重点了解二叉树的定义、性质、存储结构; 掌握二叉树遍历的递归算法及它的典型运算;
9.1 基本概念 9.2 线性表的查找 9.3 树表的查找 9.4 哈希表的查找 9.5 各种查找方法的比较
Ch.9 查找 §9.1 基本概念 查找和排序是两个重要的运算
图 (三).
第8章 图 8.1 图的基本概念和基本操作 8.2 图的邻接矩阵存储结构 8.3 图的邻接表存储结构 8.4 图的其他存储结构
图(二).
鄧姚文 資料結構 第八章:圖(Graph) 鄧姚文
第 六 讲 栈和队列(一).
樂理教學                 茄苳國小蔡逸凡老師.
图练习.
第十二章 位运算.
7.2 正弦公式 附加例題 1 附加例題 2.
10.3 水平面上的方位角.
目录 12.1 位运算符 12.2 位域(位段) 1.
第六章 图.
圖形結構 Graph Structure chapter 9 德明科技大學資訊科技系.
第7章 图.
Presentation transcript:

复习

第1章 主要内容: 数据结构基本概念和术语 算法概念和特点 算法分析的衡量标准 重点:计算时间复杂度(习题)

第2章 主要内容: 线性表的定义和特点 线性表的顺序存储及查找、插入和删除 线性链表的链式存储及查找、插入和删除操作 插入删除时元素的平均移动次数 线性链表的链式存储及查找、插入和删除操作

第3章-第5章 主要内容: 栈的定义及实现 队列的定义及基本操作 串(基本概念、朴素模式匹配算法) 数组的定义 矩阵的压缩存储 栈的定义 实现入栈,出栈 队列的定义及基本操作 循环队列求长度、入队、出队 串(基本概念、朴素模式匹配算法) 数组的定义 矩阵的压缩存储 特殊矩阵 稀疏矩阵

例1: 对于一个栈,给出输入项A、B、C,如果输入项序列 由ABC组成,试给出所有可能的输出序列。 A进 A出 B进 B出 C进 C出 ABC A进 A出 B进 C进 C出 B出 ACB A进 B进 B出 A出 C进 C出 BAC A进 B进 B出 C进 C出 A出 BCA A进 B进 C进 C出 B出 A出 CBA 不可能产生输出序列CAB

例2:设有两个顺序栈S1和S2共享一个存储区S[0:m-1],为了尽量利用存储空间减少溢出的可能性,采用栈顶相向、迎面增长的存储方式,要求分别设计两个栈的入栈和出栈操作。

分析:本题算法思想是引入形式参数flag,当形式参数flag的值为1时表示对栈1进行操作,flag的值为2时表示对栈2进行操作。 typedef struct {int s[m]; int top1; int top2;} sqstack; void push(sqstack &stack , int x,int flag) { if (stack.top1+1==stack.top2) printf(“stack is full\n”); else { if (flag==1) {stack.top1++; stack.s[stack.top1]=x;} else if(flag==2){stack.top2--; stack.s[stack.top2]=x;}else printf(“input error\n”); } void pop(sqstack &stack , int &y, int flag) { if (flag==1) if(stack.top1<0) printf(“empty\n”); else { y=stack.s[stack.top1];stack.top1--; } else if(flag==2) if(stack.top2>=m) printf(“empty\n”); else { y=stack.s[stack.top2];stack.top2++; } else printf(“input error\n”);

例3:设二维数组A有m行n列,每个数组元素占L个字节的存储单元,按行的顺序存放在m 例3:设二维数组A有m行n列,每个数组元素占L个字节的存储单元,按行的顺序存放在m*n个连续的存储单元中。已知A[0][0]的地址为1000,则A[i][j]的地址为1000+(i*n+j)*L。

第6章 树 主要内容: Huffman树 树的定义及相关术语 二叉树的定义、性质、存储结构(顺序、二叉链表) 第6章 树 主要内容: 树的定义及相关术语 二叉树的定义、性质、存储结构(顺序、二叉链表) 二叉树的遍历方法及递归遍历算法的实现 森林与二叉树的转换 Huffman树

二叉树的定义及性质 定义:是n(n≥0)个结点的有限集合,由一个根结点以及两棵互不相交的、分别称为左子树和右子树的二叉树组成 。 逻辑结构: 一对二(1:2) 基本特征: ① 每个结点最多只有两棵子树(不存在度大于2的结点); ② 左子树和右子树次序不能颠倒(有序树)。 基本形态: 问:具有3个结点的二叉树可能有几种不同形态?普通树呢? 5种/2种

二叉树的存储结构 T[0] T[1] T[2] T[3] T[4] T[5] T[6] T[7] T[8] 1 2 3 4 5 6 7 8 9 2 3 4 5 6 7 8 9 顺序存储结构 按二叉树的结点“自上而下、 从左至右”编号,用一组连续 的存储单元存储.

A 先序遍历的结果是: A B D E C B C 中序遍历的结果是: D B E A C D E 后序遍历的结果是: D E B C A 口诀: DLR—先序遍历,即先根再左再右 LDR—中序遍历,即先左再根再右 LRD—后序遍历,即先左再右再根

例6-1:已知一棵二叉树的中序序列和后序序列分别是BDCEAFHG 和 DECBHGFA,请画出这棵二叉树。 分析: ①由后序遍历特征,根结点必在后序序列尾部(即A); ②由中序遍历特征,根结点必在其中间,而且其左部必全部是左子树子孙(即BDCE),其右部必全部是右子树子孙(即FHG); ③继而,根据后序中的DECB子树可确定B为A的左孩子,根据HGF子串可确定F为A的右孩子;以此类推。

中序遍历:B D C E A F H G 后序遍历:D E C B H G F A

例6-2 树的存储方式:孩子兄弟表示法 以二叉链表作为存储结构。 结点结构: fch data nsib fch:指向该结点的第一个孩子结点 nsib:指向该结点的下一个兄弟结点 typedef struct csNode{ ElemType data; struct csNode *firstchild,*nextsibling; }csNode,*csTree; 表示:

A ^ B ^ E D ^ F ^ ^ H ^ ^ C ^ G ^ M ^ 例: G B D C E F H M A 二叉链表: A ^ B ^ E D ^ F ^ ^ H ^ ^ C ^ G ^ M ^

例6-3 森林与二叉树之间的相互转化 森林转二叉树举例: 例6-3 森林与二叉树之间的相互转化 森林转二叉树举例: A B C D E F G H J I A B C D E F G H J I A B C D E F G H J I A 兄弟相连 长兄为父 孩子靠左 头根为根

即B={root, LB, RB} F={T1, T2, …,Tm} 二叉树如何还原为森林? 即B={root, LB, RB} F={T1, T2, …,Tm} 要点:把最右边的子树变为森林,其余右子树变为兄弟 G H J I A B C D E F G H J I A B C D E F A B C D E F G H J I

例6-4 Huffman树 以数据集{7, 19, 2, 6, 32, 3, 21, 10}为结点权值,画出Huffman树,并计算其带权路径长度。 5 6 11 10 7 32 17 28 21 19 40 60 100 1 Huffman码的WPL=2(19+32+21) + 4(7+6+10) +5(2+3) =261 2 3

第7章 图 7.1 图的定义和术语 7.2 图的存储结构 7.3 图的遍历 7.4 图的连通性问题 7.5 有向无环图及其应用

度:与每个顶点相连的边的数叫该点的度。记为TD(V) 无向图中,顶点的度为与每个顶点相连的边数 有向图中,顶点的度分成入度与出度 7.1 图的定义和术语 有向图:0 ≤ e ≤ n(n-1) 有向完全图 e = n(n-1) 无向图:0 ≤ e ≤ ½ n(n-1) 完全图 e = ½ n(n-1) 度:与每个顶点相连的边的数叫该点的度。记为TD(V) 无向图中,顶点的度为与每个顶点相连的边数 有向图中,顶点的度分成入度与出度 入度:以该顶点为头的弧的数目,记为ID(V) 出度:以该顶点为尾的弧的数目,记为OD(V)

7.2 图的存储结构 邻接矩阵 特点: 无向图的邻接矩阵对称,可压缩存储;有n个顶点的无向图需存储空间为n(n+1)/2 无向图中顶点Vi的度TD(Vi)是邻接矩阵A中第i行元素之和 有向图中, 顶点Vi的出度是A中第i行元素之和 顶点Vi的入度是A中第i列元素之和

题型:图、邻接矩阵、邻接表三者之间的转化 从无向图的邻接表可以得到如下结论: 无向图中顶点Vi的度为第i个单链表中的结点数 所有链表中结点数目的一半为图中边数; 占用的存储单元数目为n+2e 。 从有向图的邻接表可以得到如下结论: 顶点Vi的出度为第i个单链表中的结点个数 顶点Vi的入度为整个单链表中邻接点域值是i的结点个数 所有链表中结点数目为图中弧数; 占用的存储单元数目为n+e 。 题型:图、邻接矩阵、邻接表三者之间的转化

7.3 图的遍历 深度优先遍历(DFS) 广度优先遍历(BFS)

V0 V1 V3 V4 V2 V6 V5 V7 例 深度遍历:V0 V2  V6  V5  V1  V3  V7  V4 1 2 3 v0 v2 v3 v1 vexdata firstarc 6 7 ^ adjvex next 4 v4 5 v5 v6 v7

7.4 求最小生成树 普里姆算法(归并顶点,适用于稠密网) 克鲁斯卡尔(kruskal)算法

例如:克鲁斯卡尔算法 a a b b c c e e g g d d f f 19 19 5 5 12 12 14 14 7 7 18 18 16 16 8 8 3 3 g g d d 27 21 21 f f

例如:普里姆(prim)算法 a a b b c c e e g g d d f f 所得生成树权值和 19 a a b b 5 5 12 14 14 c c 7 18 e e 8 8 16 16 3 3 g g d d 27 21 21 f f 所得生成树权值和 = 14+8+3+5+16+21 = 67

7.5 1 拓扑排序 AOV网——用顶点表示活动,用弧表示活动间优先关系的有向图称为顶点表示活动的网(Activity On Vertex network),简称AOV网

C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 拓扑序列:C1--C2--C3--C4--C5--C7--C9--C10--C11--C6--C12--C8 或 :C9--C10--C11--C6--C1--C12--C4--C2--C3--C5--C7--C8 一个AOV网的拓扑序列不是唯一的

5 1 6 4 3 2 8 30 13 7 17 32 9 终点 从V0到各终点的最短路径及其长度 V1 V2 V3 V4 V5 V6 Vj 8 30 13 7 17 32 9 2. 最短路径的求法:迪杰斯特拉(Dijkstra)算法 终点 从V0到各终点的最短路径及其长度 V1 V2 V3 V4 V5 V6 Vj 13 <V0,V1> 8 <V0,V2>  30 <V0,V4> 32 <V0,V6> V2:8 13 <V0,V1> ------- <V0,V2,V3> 30 <V0,V4>  32 <V0,V6> V1:13 ------- 13 <V0,V2,V3> 30 <V0,V4> 22 <V0,V1,V5> 20 <V0,V1,V6> V3:13 ------- 19 <V0,V2,V3,V4> 22 <V0,V1,V5> 20 <V0,V1,V6> V4:19 -------- 21 <V0,V2,V3,V4,V5> 20 <V0,V1,V6> V6:20 <V0, V1,V6>

作业 已知无向图G的邻接矩阵, 按要求完成下列各题。 给出无向图G中各顶点的度数; 给出无向图G的邻接表; 分别给出应用Kruskal和Prim算法构造最小生成树的过程。 答案:TD(v1)=TD(v2)=TD(v3)=TD(v4)=3,TD(v5)=4 v1->1->3->4;v2->0->2->4;v3->1->3->4;v4->0->2->4;v5->0->1->2->3 Prim算法:(v1,v2),(v2,v3),(v2,v5),(v5,v4) Kruskal算法:(v2,v5),(v2,v3),(v2,v1),(v5,v4)

考研题 带权图(权值非负,表示边连接的两顶点间的距离)的最短路径问题是找出从初始顶点到目标顶点之间的一条最短路径。假定从初始顶点到目标顶点之间存在路径,现有一种解决该问题的方法: ①设最短路径初始时仅包含初始顶点,令当前顶点u为初始顶点; ②选择离u最近且尚未在最短路径中的一个顶点v,加入到最短路径中,修改当前顶点u=v; ③重复步骤②,直到u是目标顶点时为止。 请问(1)上述方法能否求得最短路径?(2)若该方法可行,请证明之;否则,请举例说明。

该方法求得的路径不一定是最短路径。例如,对于下图所示的带权图,如果按照题中的原则,从A到C的最短路径为A→B→C,事实上其最短路径为A→D→C。

第9章 查找 9.1 静态查找表 9.2 动态查找表 9.3 哈希表 顺序查找(线性查找) 折半查找(二分或对分查找) 二叉排序树 第9章 查找 9.1 静态查找表 顺序查找(线性查找) 折半查找(二分或对分查找) 9.2 动态查找表 二叉排序树 平衡二叉树 9.3 哈希表

9.1 静态查找表 顺序查找(线性查找) 把待查关键字key存入表头或表尾(俗称“哨兵”),目的在于免去查找过程中每一步都要检测整个表是否查找完毕,这样可以加快执行速度。

9.1 静态查找表 折半查找(二分或对分查找) 先给数据排序(例如按升序排好),形成有序表,然后再将key与正中元素相比,若key小,则缩小至右半部内查找;再取其中值比较,每次缩小1/2的范围,直到查找成功或失败为止。 设定3个辅助标志: low,high,mid Low指向待查元素所在区间的下界 high指向待查元素所在区间的上界 mid= (low+high)/2

9.2 动态查找表 二叉排序树、平衡二叉树 基本概念 二叉排序树的插入和查找操作 构造一棵平衡二叉排序树

例:输入待查找的关键字序列=(45,24,53,45,12,24,90) 2. 二叉排序树的插入和查找操作 例:输入待查找的关键字序列=(45,24,53,45,12,24,90) 查找成功,返回 查找成功,返回 则生成二叉排序树的过程为: 45 24 53 12 90 如果待查找的关键字序列输入顺序为: (24,53, 45,45,12,24,90), 查找成功,返回 查找成功,返回 24 则生成的二叉排序树形态不同: 12 53 90 45

例:请将下面序列构成一棵平衡二叉排序树: ( 13,24,37,90,53) 例:请将下面序列构成一棵平衡二叉排序树: ( 13,24,37,90,53) 需要RL平衡旋转 (绕C先顺后逆) 13 37 24 -1 24 13 -2 13 -1 13 24 37 90 53 -1 37 -2 37 -1 24 需要RR平衡旋转 (绕B逆转,B为根) 90 37 1 90 53 90 53 37

9.3 哈希表 哈希表的概念 哈希函数的构造方法 冲突处理方法 除留余数法 开放定址法(开地址法):线性探测法 特点:取关键字被某个不大于哈希表长m的数p除后所得余数为哈希地址。H (key)=key mod p (p是一个整数) 技巧:若设计的哈希表长为m,则一般取p≤m且为质数 (也可以是不包含小于20质因子的合数)。 冲突处理方法 开放定址法(开地址法):线性探测法

第7章 排序 直接插入排序 冒泡排序 折半插入 简单选择排序 题型:已知一序列,给出排序过程。

算法题 线性表的链式存储结构 二叉树的操作 数据类型定义 基本操作:创建、插入、删除、查找 二叉链表数据类型定义 二叉树的递归遍历算法 前序、中序、后序 构造二叉树/求二叉树的叶子结点数、交换二叉树等。