数据结构(王红梅).ppt
《数据结构(王红梅).ppt》由会员分享,可在线阅读,更多相关《数据结构(王红梅).ppt(166页珍藏版)》请在三一办公上搜索。
1、考试题型,一、填空 10题,每题一分,共10分二、选择 10题,每题一分,共10分三、解答题 6题,共55分四、算法设计 3题,共25分,成绩组成卷面成绩:100*70%=70平时成绩:20实验成绩:10,题型示例,已知一个连通图如图1所示,试给出图的邻接矩阵存储示意图,若从顶点v1出发对该图进行遍历,分别给出一个按深度优先遍历和广度优先遍历的顶点序列。,图1 连通图,题型示例,已知一个连通图如图1所示,试给出图的邻接矩阵存储示意图,若从顶点v1出发对该图进行遍历,分别给出一个按深度优先遍历和广度优先遍历的顶点序列。,深度优先遍历序列:v1 v2 v3 v5 v4 v6广度优先遍历序列:v1
2、v2 v4 v3 v5 v6,题型示例,设计算法,计算采用邻接矩阵存储有向图中出度为零的顶点个数。,int SumZero(AdjMatrix A)count=0;for(i=0;iA.vertexNum;i+)tag=0;for(j=0;jA.vertexNum;j+)if(arcsij!=0)tag=1;break;if(tag=0)count+;return count;,第一章 知识结构图,通常有两种存储结构:1.顺序存储结构:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。,1.3 数据结构的基本概念,数据结构的基本概念,通常有两种存储结构:1.顺
3、序存储结构:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。2.链接存储结构:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示。,例:(bat,cat,eat),1.3 数据结构的基本概念,数据结构的基本概念,bat0200,cat0325,eat,数据的操作:插入、删除、修改、检索、排序等,1.3 数据结构的基本概念(小结),算法分析,算法分析(Algorithm Analysis):对算法所需要的计算机资源时间和空间进行估算。时间复杂性(Time Complexity)空间复杂性(Space Complexity),1.4 算法及算法
4、分析,问题规模:输入量的多少。基本语句:是执行次数与整个算法的执行次数成正比的操作指令。,问题规模:n基本语句:x+,1.4 算法及算法分析,算法分析,for(i=1;i=n;i+)for(j=1;j=n;j+)x+;,定理:若A(n)=amnm+am-1nm-1+a1n+a0是一个m次多项式,则A(n)=O(nm)。,说明:在计算算法时间复杂度时,可以忽略所有低次幂和最高次幂的系数。,1.4 算法及算法分析,算法分析大O符号,线 性 表,逻辑结构,存储结构,基本概念,抽象数据类型定义,线性表定义逻辑特征,ADT定义基本操作,顺序存储,链接存储,其他存储,顺序表的特点顺序表类定义基本操作的实现
5、及时间性能,单链表的特点单链表类定义基本操作的实现及时间性能,比 较,循环链表双链表静态链表间接寻址,第二章 知识结构图,线性表:简称表,是n(n0)个具有相同类型的数据元素的有限序列。线性表的长度:线性表中数据元素的个数。空表:长度等于零的线性表,记为:L=()。非空表记为:L(a1,a2,ai-1,ai,an),2.1 线性表的逻辑结构,线性表的定义,其中,ai(1in)称为数据元素;下角标 i 表示该元素在线性表中的位置或序号。,2.1 线性表的逻辑结构,线性表的图形表示,线性表(a1,a2,ai-1,ai,an)的图形表示如下:,2.2 线性表的顺序存储结构及实现,顺序表线性表的顺序存
6、储结构,例:(34,23,67,43),34,23,67,43,4,0 i-2 i-1 n-1 Max-1,a1,ai-1,ai,an,空闲,长度,Loc(ai)=Loc(a1)+(i-1)c,随机存取:在O(1)时间内存取数据元素,2.2 线性表的顺序存储结构及实现,顺序表,一般情况下,(a1,a2,,ai-1,ai,an)的顺序存储:,单链表:线性表的链接存储结构。存储思想:用一组任意的存储单元存放线性表的元素。,2.3 线性表的链接存储结构及实现,单链表,头结点:在单链表的第以一个元素结点之前附设一个类型相同的结点,以便空表和非空表处理统一。,2.3 线性表的链接存储结构及实现,单链表,
7、非空表,单链表的实现按位查找,操作接口:T Get(int i);,核心操作(关键操作):工作指针后移。从头结点(或开始结点)出发,通过工作指针的反复后移而将整个单链表“审视”一遍的方法称为扫描(或遍历)。,2.3 线性表的链接存储结构及实现,first,a1,a2,an,ai,单链表的实现插入,操作接口:void Insert(int i,T x);,2.3 线性表的链接存储结构及实现,如何实现结点ai-1、x和ai之间逻辑关系的变化?,算法描述:s=new Node;s-data=x;s-next=p-next;p-next=s;,静态链表:用数组来表示单链表,用数组元素的下标来模拟单链表
8、的指针。,静态链表,2.5 线性表的其它存储方法,data:存储放数据元素;next:也称游标,存储该元素的后继在数组的下标。,数组元素(结点)的构成:,数据域,指针域,例:线性表(张,王,李,赵,吴)的静态链表存储,012345678,2.5 线性表的其它存储方法,data next,静态链表,first,avail,first:静态链表头指针,为了方便插入和删除操作,通常静态链表带头结点;avail:空闲链表头指针,空闲链表由于只在表头操作,所以不带头结点;,特殊线性表,栈,队 列,串,栈的定义操作特性ADT定义,队列定义操作特性ADT定义,串的定义基本概念ADT定义,顺序栈,链栈,循环队
9、列,链队列,顺序存储,链接存储,逻辑结构,存储结构,逻辑结构,逻辑结构,存储结构,存储结构,比 较,模式匹配,比较,比较,基本操作的实现时间性能,基本操作的实现时间性能,第三章 知识结构图,特殊线性表栈,栈的逻辑结构,栈:限定仅在表尾进行插入和删除操作的线性表。,线性结构:栈元素具有线性(即前驱后继)关系。限制操作:限制了线性表插入和删除的位置。单向延伸性:栈底是固定的,栈顶随着插入和删除操作的进行而变化。插入:也称进栈、压栈、入栈;删除:也称出栈、弹栈。,特殊线性表栈,a,出栈序列:a,出栈序列:a、b,出栈序列:a、b、c,b,例:有三个元素按a、b、c的次序依次进栈,且每个元素只允许进一
10、次栈,则可能的出栈序列有多少种?,栈的逻辑结构,情况5:,c,注意:栈只是对表插入和删除操作的位置进行了限制,并没有限定插入和删除操作进行的时间。,c b a,、b c a,、b a c,、a c b,、a b c,栈的顺序存储结构及实现,顺序栈栈的顺序存储结构,如何改造数组实现栈的顺序存储?,a1,确定用数组的哪一端表示栈底。,特殊线性表栈,附设指针top指示栈顶元素在数组中的位置。,栈的链接存储结构及实现,栈顶,栈底,链栈:栈的链接存储结构,特殊线性表栈,两种示意图在内存中对应同一种状态,栈顶,栈底,特殊线性表队列,队列的逻辑结构,空队列:不含任何数据元素的队列。,队列:只允许在一端进行插
11、入操作,而另一端进行删除操作的线性表。,允许插入(也称入队、进队)的一端称为队尾,允许删除(也称出队)的一端称为队头。,(a1,a2,an),假溢出:当元素被插入到数组中下标最大的位置上之后,队列的空间就用尽了,尽管此时数组的低端还有空闲空间,这种现象叫做假溢出。,特殊线性表队列,队列的顺序存储结构及实现,继续入队会出现什么情况?,a3,a4,a5,循环队列:将存储队列的数组头尾相接。,特殊线性表队列,队列的顺序存储结构及实现,如何解决假溢出?,0 1 2 3 4,入队,出队,a3,a4,a5,a6,特殊线性表队列,不存在物理的循环结构,用软件方法实现。求模:(41)mod 50,队列的顺序存
12、储结构及实现,如何实现循环队列?,0 1 2 3 4,入队,出队,a3,a4,a6,a5,队满的条件:(rear+1)mod QueueSize=front,队列的顺序存储结构及实现,特殊线性表队列,第五章 知识结构图,树的定义,树:n(n0)个结点的有限集合。当n0时,称为空树;任意一棵非空树满足以下条件:有且仅有一个特定的称为根的结点;当n1时,除根结点之外的其余结点被分成m(m0)个互不相交的有限集合T1,T2,Tm,其中每个集合又是一棵树,并称为这个根结点的子树。,5.1 树的逻辑结构,树的定义是采用递归方法,树的定义,5.1 树的逻辑结构,下标 data parent,5.2 树的存
13、储结构,双亲表示法,012345678,下标 data firstchild,A B C D E F G H I,5.2 树的存储结构,5.2 树的存储结构,孩子兄弟表示法,如何查找兄弟结点?时间性能?,二叉树的定义,二叉树是n(n0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。,5.3 二叉树的逻辑结构,问题转化:将树转换为二叉树,从而利用二叉树解决树的有关问题。,研究二叉树的意义?,完全二叉树对一棵具有n个结点的二叉树按层序编号,如果编号为i(1in)的结点与同样深度的满二叉树中编号为i的结点在二叉树中的
14、位置完全相同。,5.3 二叉树的逻辑结构,特殊的二叉树,二叉树的遍历操作,二叉树的遍历是指从根结点出发,按照某种次序访问二叉树中的所有结点,使得每个结点被访问一次且仅被访问一次。,二叉树遍历操作的结果?,5.3 二叉树的逻辑结构,前序(根)遍历若二叉树为空,则空操作返回;否则:访问根结点;前序遍历根结点的左子树;前序遍历根结点的右子树。,5.3 二叉树的逻辑结构,前序遍历序列:A B D G C E F,二叉树的遍历操作,中序(根)遍历若二叉树为空,则空操作返回;否则:中序遍历根结点的左子树;访问根结点;中序遍历根结点的右子树。,5.3 二叉树的逻辑结构,中序遍历序列:D G B A E C
15、F,二叉树的遍历操作,后序(根)遍历若二叉树为空,则空操作返回;否则:后序遍历根结点的左子树;后序遍历根结点的右子树。访问根结点;,5.3 二叉树的逻辑结构,后序遍历序列:G D B E F C A,二叉树的遍历操作,层序遍历二叉树的层次遍历是指从二叉树的第一层(即根结点)开始,从上至下逐层遍历,在同一层中,则按从左到右的顺序对结点逐个访问。,5.3 二叉树的逻辑结构,层序遍历序列:A B C D E F G,二叉树的遍历操作,若已知一棵二叉树的前序序列和中序序列,能否唯一确定这棵二叉树呢?怎样确定?,例如:已知一棵二叉树的前序遍历序列和中序遍历序列分别为ABCDEFGHI 和BCAEDGHF
16、I,如何构造该二叉树呢?,5.3 二叉树的逻辑结构,二叉树的遍历操作,前序:A B C D E F G H I中序:B C A E D G H F I,前序:B C中序:B C,5.3 二叉树的逻辑结构,前序:D E F G H I中序:E D G H F I,前序:F G H I中序:G H F I,5.3 二叉树的逻辑结构,前序:D E F G H I中序:E D G H F I,顺序存储结构,二叉树的顺序存储结构就是用一维数组存储二叉树中的结点,并且结点的存储位置(下标)应能体现结点之间的逻辑关系父子关系。,如何利用数组下标来反映结点之间的逻辑关系?,完全二叉树和满二叉树中结点的序号可以
17、唯一地反映出结点之间的逻辑关系。,5.4 二叉树的存储结构及实现,完全二叉树的顺序存储,5.4 二叉树的存储结构及实现,以编号为下标,二叉链表,基本思想:令二叉树的每个结点对应一个链表结点,链表结点除了存放与二叉树结点有关的数据信息外,还要设置指示左右孩子的指针。,结点结构:,其中,data:数据域,存放该结点的数据信息;lchild:左指针域,存放指向左孩子的指针;rchild:右指针域,存放指向右孩子的指针。,5.4 二叉树的存储结构及实现,二叉链表,5.4 二叉树的存储结构及实现,5.5 树、森林与二叉树的转换,树和二叉树之间的对应关系 树:兄弟关系二叉树:双亲和右孩子 树:双亲和长子二
18、叉树:双亲和左孩子,5.5 树、森林与二叉树的转换,2.保留双亲与第一孩子连线,删去与其他孩子的连线,树和二叉树之间的对应关系,1.兄弟加线,3.顺时针转动,使之层次分明,5.5 树、森林与二叉树的转换,树和二叉树之间的对应关系,2.保留双亲与第一孩子连线,删去与其他孩子的连线,1.兄弟加线,A,B,C,D,E,F,G,3.顺时针转动,使之层次分明,5.5 树、森林与二叉树的转换,树和二叉树之间的对应关系,2.保留双亲与第一孩子连线,删去与其他孩子的连线,1.兄弟加线,5.5 树、森林与二叉树的转换,二叉树转换为树或森林,加线若某结点x是其双亲y的左孩子,则把结点x的右孩子、右孩子的右孩子、,
19、都与结点y用线连起来;去线删去原二叉树中所有的双亲结点与右孩子结点的连线;层次调整整理由、两步所得到的树或森林,使之层次分明。,5.5 树、森林与二叉树的转换,5.5 树、森林与二叉树的转换,哈夫曼树:给定一组具有确定权值的叶子结点,带权路径长度最小的二叉树。,例:给定4个叶子结点,其权值分别为2,3,4,7,可以构造出形状不同的多个二叉树。,5.6 哈夫曼树及哈夫曼编码,WPL=32 WPL=41 WPL=30,第1步:初始化,W2,3,4,5 哈夫曼树的构造过程,5.6 哈夫曼树及哈夫曼编码,第2步:选取与合并,第3步:删除与加入,W2,3,4,5 哈夫曼树的构造过程,5.6 哈夫曼树及哈
20、夫曼编码,重复第2步,5,4,3,2,5,重复第3步,W2,3,4,5 哈夫曼树的构造过程,5.6 哈夫曼树及哈夫曼编码,重复第2步,重复第3步,5.6 哈夫曼树及哈夫曼编码,前缀编码:一组编码中任一编码都不是其它任何一个编码的前缀。前缀编码保证了在解码时不会有多种可能。,例:一组字符A,B,C,D,E,F,G出现的频率分别是9,11,5,7,8,2,3,设计最经济的编码方案。,哈夫曼树应用哈夫曼编码,9,11,5,5.6 哈夫曼树及哈夫曼编码,哈夫曼树应用哈夫曼编码,A,B,C,D,E,F,G,9,11,5,7,8,2,3,5.6 哈夫曼树及哈夫曼编码,编码方案:A:00B:10C:010D
21、:110E:111F:0110G:0111,哈夫曼树应用哈夫曼编码,第六章 知识结构图,连通图:在无向图中,如果从一个顶点vi到另一个顶点vj(ij)有路径,则称顶点vi和vj是连通的。如果图中任意两个顶点都是连通的,则称该图是连通图。连通分量:非连通图的极大连通子图称为连通分量。,6.1 图的逻辑结构,图的基本术语,如何求得一个非连通图的连通分量?,6.1 图的逻辑结构,V1,V2,V3,V4,V5,V6,V7,图的基本术语,连通分量是对无向图的一种划分。,强连通图:在有向图中,对图中任意一对顶点vi和vj(ij),若从顶点vi到顶点vj和从顶点vj到顶点vi均有路径,则称该有向图是强连通图
22、。强连通分量:非强连通图的极大强连通子图。,6.1 图的逻辑结构,图的基本术语,如何求得一个非连通图的连通分量?,6.1 图的逻辑结构,图的基本术语,V1,V2,生成树:n个顶点的连通图G的生成树是包含G中全部顶点的一个极小连通子图。,生成森林:在非连通图中,由每个连通分量都可以得到一棵生成树,这些连通分量的生成树就组成了一个非连通图的生成森林。,如何理解极小连通子图?,6.1 图的逻辑结构,图的基本术语,6.1 图的逻辑结构,1.深度优先遍历,基本思想:,访问顶点v;从v的未被访问的邻接点中选取一个顶点w,从w出发进行深度优先遍历;重复上述两步,直至图中所有和v有路径相通的顶点都被访问到。,
23、6.1 图的逻辑结构,深一层递归,递归返回,深度优先遍历序列?入栈序列?出栈序列?,6.1 图的逻辑结构,V1,遍历序列:,V1,V2,V2,V4,V4,V5,V5,深一层递归,递归返回,深度优先遍历序列?入栈序列?出栈序列?,6.1 图的逻辑结构,V1,遍历序列:,V1,V2,V2,V4,V4,V5,V8,V8,深一层递归,递归返回,深度优先遍历序列?入栈序列?出栈序列?,6.1 图的逻辑结构,V1,遍历序列:,V1,V2,V2,V4,V4,V5,V8,深一层递归,递归返回,深度优先遍历序列?入栈序列?出栈序列?,6.1 图的逻辑结构,V1,遍历序列:,V1,V7,V2,V4,V5,V8,V
24、3,V3,V6,V6,V7,2.广度优先遍历,基本思想:,访问顶点v;依次访问v的各个未被访问的邻接点v1,v2,vk;分别从v1,v2,vk出发依次访问它们未被访问的邻接点,并使“先被访问顶点的邻接点”先于“后被访问顶点的邻接点”被访问。直至图中所有与顶点v有路径相通的顶点都被访问到。,6.1 图的逻辑结构,广度优先遍历序列?入队序列?出队序列?,6.1 图的逻辑结构,遍历序列:,V1,V1,广度优先遍历序列?入队序列?出队序列?,6.1 图的逻辑结构,遍历序列:,V1,V2,V2,V3,V3,广度优先遍历序列?入队序列?出队序列?,6.1 图的逻辑结构,遍历序列:,V1,V2,V3,V3,
25、V4,V4,V5,V5,广度优先遍历序列?入队序列?出队序列?,6.1 图的逻辑结构,遍历序列:,V1,V2,V3,V4,V4,V5,V5,V6,V6,V7,V7,广度优先遍历序列?入队序列?出队序列?,6.1 图的逻辑结构,遍历序列:,V1,V2,V3,V4,V5,V5,V6,V6,V7,V7,V8,V8,邻接矩阵(数组表示法),基本思想:用一个一维数组存储图中顶点的信息,用一个二维数组(称为邻接矩阵)存储图中各顶点之间的邻接关系。,6.2 图的存储结构及实现,假设图G(V,E)有n个顶点,则邻接矩阵是一个nn的方阵,定义为:,无向图的邻接矩阵的特点?,无向图的邻接矩阵,6.2 图的存储结构
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 红梅
链接地址:https://www.31ppt.com/p-3787947.html