数据结构图资料学习教案.pptx
《数据结构图资料学习教案.pptx》由会员分享,可在线阅读,更多相关《数据结构图资料学习教案.pptx(50页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构数据结构(sh j ji u)图资料图资料第一页,共50页。2 27.1 图的基本概念图的基本概念7.1.1图的定义图的定义图中的数据元素称为顶点。在顶点集合图中的数据元素称为顶点。在顶点集合V中,中,第第i个顶点记作个顶点记作vi图中两个顶点图中两个顶点vi和和vj之间有关联关系,称作顶之间有关联关系,称作顶点点vi和和vj之间有一条边。在边集合之间有一条边。在边集合E中,第中,第k条边记作条边记作ek=。图是由顶点的非空有限集合与顶点间关系集图是由顶点的非空有限集合与顶点间关系集合构成的数据结构。记作合构成的数据结构。记作G=(V,E)。其中,。其中,V为顶点集合,为顶点集合,E为
2、顶点间关系为顶点间关系边的集边的集合。合。无向图:由没有方向的边构成的图称为无向无向图:由没有方向的边构成的图称为无向图。图。无向图中的边由顶点的无序无向图中的边由顶点的无序(w x)偶对组偶对组成,因此,在无向图中,顶点偶对成,因此,在无向图中,顶点偶对与顶点偶对与顶点偶对表示同一条边,记作表示同一条边,记作(vi,vj)。第1页/共50页第二页,共50页。3 37.1.1图的定义(dngy)有向图:由有方向的边构成的图称为有向图。有向图:由有方向的边构成的图称为有向图。弧:有向图中的边由顶点的有序偶对组成。弧:有向图中的边由顶点的有序偶对组成。顶点偶对顶点偶对表示从顶点表示从顶点vi指向指
3、向(zh xin)顶点顶点vj的一条有向边,也称为弧。顶的一条有向边,也称为弧。顶点点vi是有向边的始点,也称为弧尾。顶点是有向边的始点,也称为弧尾。顶点vj是有向边的终点,也称为弧头。是有向边的终点,也称为弧头。第2页/共50页第三页,共50页。4 47.1.1图的定义(dngy)完全图:含有完全图:含有n个顶点和条边的无向图称为个顶点和条边的无向图称为完全图。在完全图中,任意完全图。在完全图中,任意(rny)两个顶两个顶点之间均有边相连点之间均有边相连推论推论1:具有:具有n个顶点的无向图最多有条边。个顶点的无向图最多有条边。有向完全图:含有有向完全图:含有n个顶点和个顶点和n(n-1)条
4、弧的条弧的有向图称为有向完全图。在有向完全图中,有向图称为有向完全图。在有向完全图中,任意任意(rny)两个顶点之间均有两条方向相两个顶点之间均有两条方向相反的弧。反的弧。推论推论2:具有:具有n个顶点的有向图最多有个顶点的有向图最多有n(n-1)条弧。条弧。第3页/共50页第四页,共50页。5 57.1.17.1.1图的定义图的定义(dngy)(dngy)邻接点:在无向图中,若存在一条边邻接点:在无向图中,若存在一条边邻接点:在无向图中,若存在一条边邻接点:在无向图中,若存在一条边(vi,vj)(vi,vj),则称,则称,则称,则称vivi和和和和vjvj互为邻接点。称边互为邻接点。称边互为
5、邻接点。称边互为邻接点。称边(vi,vj)(vi,vj)依依依依附于顶点附于顶点附于顶点附于顶点vivi和和和和vjvj或称边或称边或称边或称边(vi,vj)(vi,vj)与顶点与顶点与顶点与顶点vivi和和和和vjvj相关联。相关联。相关联。相关联。顶点的度:在无向图中,与顶点顶点的度:在无向图中,与顶点顶点的度:在无向图中,与顶点顶点的度:在无向图中,与顶点v v相关联的边数称为顶点相关联的边数称为顶点相关联的边数称为顶点相关联的边数称为顶点v v的度,记作的度,记作的度,记作的度,记作TD(v)TD(v)。在有向图中,顶点的度又分为顶点的入度和顶点的出度。顶点的入度是指以顶点在有向图中,
6、顶点的度又分为顶点的入度和顶点的出度。顶点的入度是指以顶点在有向图中,顶点的度又分为顶点的入度和顶点的出度。顶点的入度是指以顶点在有向图中,顶点的度又分为顶点的入度和顶点的出度。顶点的入度是指以顶点v v为弧为弧为弧为弧头的弧的数目头的弧的数目头的弧的数目头的弧的数目(shm)(shm),记作,记作,记作,记作ID(v)ID(v);顶点的出度是指以顶点;顶点的出度是指以顶点;顶点的出度是指以顶点;顶点的出度是指以顶点v v为弧尾的弧的数目为弧尾的弧的数目为弧尾的弧的数目为弧尾的弧的数目(shm)(shm),记作,记作,记作,记作OD(v)OD(v)。顶点。顶点。顶点。顶点v v的度等于顶点的度
7、等于顶点的度等于顶点的度等于顶点v v的入度和出度之和,即的入度和出度之和,即的入度和出度之和,即的入度和出度之和,即TD(v)=ID(v)+OD(v)TD(v)=ID(v)+OD(v)。推论推论推论推论3 3:对于无向图,其总度数是总边数的两倍。:对于无向图,其总度数是总边数的两倍。:对于无向图,其总度数是总边数的两倍。:对于无向图,其总度数是总边数的两倍。推论推论推论推论4 4:对于有向图,其总入度、总出度和总边数相等。:对于有向图,其总入度、总出度和总边数相等。:对于有向图,其总入度、总出度和总边数相等。:对于有向图,其总入度、总出度和总边数相等。第4页/共50页第五页,共50页。6 6
8、7.1.1图的定义(dngy)路径路径路径路径(ljng)(ljng):在图:在图:在图:在图GG中,从顶点中,从顶点中,从顶点中,从顶点vivi出发,经过一系列的边或弧能够到达顶点出发,经过一系列的边或弧能够到达顶点出发,经过一系列的边或弧能够到达顶点出发,经过一系列的边或弧能够到达顶点vjvj,则称顶点,则称顶点,则称顶点,则称顶点vivi到顶点到顶点到顶点到顶点vjvj的顶点序列为从顶点的顶点序列为从顶点的顶点序列为从顶点的顶点序列为从顶点vivi到顶点到顶点到顶点到顶点vjvj的路径的路径的路径的路径(ljng)(ljng)。该。该。该。该路径路径路径路径(ljng)(ljng)上所包
9、含的边的数目称为路径上所包含的边的数目称为路径上所包含的边的数目称为路径上所包含的边的数目称为路径(ljng)(ljng)长度长度长度长度简单路径简单路径简单路径简单路径(ljng)(ljng):若路径:若路径:若路径:若路径(ljng)(ljng)上各顶点互不重复,则称这样的路径上各顶点互不重复,则称这样的路径上各顶点互不重复,则称这样的路径上各顶点互不重复,则称这样的路径(ljng)(ljng)为简单路径为简单路径为简单路径为简单路径(ljng)(ljng)。环或回路:若路径环或回路:若路径环或回路:若路径环或回路:若路径(ljng)(ljng)上第一个顶点和最后一个顶点相同,则称这样的上
10、第一个顶点和最后一个顶点相同,则称这样的上第一个顶点和最后一个顶点相同,则称这样的上第一个顶点和最后一个顶点相同,则称这样的路径路径路径路径(ljng)(ljng)为环或回路。为环或回路。为环或回路。为环或回路。子图:对于图子图:对于图子图:对于图子图:对于图G=V,EG=V,E和图和图和图和图G=V,EG=V,E,若存在,若存在,若存在,若存在V VV V且且且且E EE E,则称图,则称图,则称图,则称图GG是是是是图图图图GG的子图。的子图。的子图。的子图。第5页/共50页第六页,共50页。7 77.1.1图的定义(dngy)连通图:在无向图中,若从顶点连通图:在无向图中,若从顶点连通图
11、:在无向图中,若从顶点连通图:在无向图中,若从顶点vivi到顶点到顶点到顶点到顶点vjvj有路径存在,则称有路径存在,则称有路径存在,则称有路径存在,则称vivi和和和和vjvj是连通的。如果是连通的。如果是连通的。如果是连通的。如果(rgu)(rgu)无向图中任意两个顶点都是连通的,则称该无向图为连通图。否则,就是非连通图。无向图无向图中任意两个顶点都是连通的,则称该无向图为连通图。否则,就是非连通图。无向图无向图中任意两个顶点都是连通的,则称该无向图为连通图。否则,就是非连通图。无向图无向图中任意两个顶点都是连通的,则称该无向图为连通图。否则,就是非连通图。无向图中的极大连通子图称为该图的
12、连通分量。中的极大连通子图称为该图的连通分量。中的极大连通子图称为该图的连通分量。中的极大连通子图称为该图的连通分量。推论推论推论推论5 5:连通图的连通分量就是它本身。:连通图的连通分量就是它本身。:连通图的连通分量就是它本身。:连通图的连通分量就是它本身。强连通图:在有向图中,若一对顶点强连通图:在有向图中,若一对顶点强连通图:在有向图中,若一对顶点强连通图:在有向图中,若一对顶点vivi和和和和vjvj(vivjvivj)存在从)存在从)存在从)存在从vivi到到到到vjvj和从和从和从和从vjvj到到到到vivi的有向路径,的有向路径,的有向路径,的有向路径,则称则称则称则称vivi和
13、和和和vjvj是连通的。若有向图中任意两个顶点是连通的。若有向图中任意两个顶点是连通的。若有向图中任意两个顶点是连通的。若有向图中任意两个顶点vivi和和和和vjvj(vivjvivj)之间都是连通的,则称该有)之间都是连通的,则称该有)之间都是连通的,则称该有)之间都是连通的,则称该有向图为强连通图。有向图中的极大强连通子图称为强连通分量。向图为强连通图。有向图中的极大强连通子图称为强连通分量。向图为强连通图。有向图中的极大强连通子图称为强连通分量。向图为强连通图。有向图中的极大强连通子图称为强连通分量。第6页/共50页第七页,共50页。8 87.1.1图的定义(dngy)权:图中边或弧上附
14、带的数据称为权:图中边或弧上附带的数据称为权:图中边或弧上附带的数据称为权:图中边或弧上附带的数据称为(chn wi)(chn wi)权。权。权。权。网:带权的图称为网:带权的图称为网:带权的图称为网:带权的图称为(chn wi)(chn wi)网。网。网。网。生成树:包含连通图全部顶点的极小连通子图称作该图的生成树。即以最少的边连接生成树:包含连通图全部顶点的极小连通子图称作该图的生成树。即以最少的边连接生成树:包含连通图全部顶点的极小连通子图称作该图的生成树。即以最少的边连接生成树:包含连通图全部顶点的极小连通子图称作该图的生成树。即以最少的边连接连通图中所有顶点。连通图中所有顶点。连通图
15、中所有顶点。连通图中所有顶点。推论推论推论推论6 6:有:有:有:有n n个顶点的连通图,它的生成树一定包含个顶点的连通图,它的生成树一定包含个顶点的连通图,它的生成树一定包含个顶点的连通图,它的生成树一定包含n n个顶点和个顶点和个顶点和个顶点和n-1n-1条边。若加上一条边条边。若加上一条边条边。若加上一条边条边。若加上一条边则构成环,若减去一条边则是非连通图。则构成环,若减去一条边则是非连通图。则构成环,若减去一条边则是非连通图。则构成环,若减去一条边则是非连通图。第7页/共50页第八页,共50页。9 97.1.2 图的抽象数据类型 ADT Graph数据元素集合:具有相同性质的称为顶点
16、的有限数据元素集合,以及称为弧或边的有限集合。基本操作:创建图(CreateGraph):按顶点和弧的定义构造图 查找顶点(LocateVex):返回指定顶点在图中的位置取顶点值(GetVex):返回指定顶点的值给顶点赋值(PetVex):给指定顶点赋值 取第一个邻接点(FirstAdjVex):取顶点的第一个邻接点取下一个邻接点(NextAdjVex):取顶点的下一个邻接点插入顶点(InsertVex):在图中插入新顶点 删除顶点(DeleteVex):在图中删除指定顶点及相关的弧插入弧(InsertArc):在图中插入一条新弧删除弧(DeleteArc):在图中删除指定的弧深度优先遍历(D
17、FSTraverse):对图进行深度优先遍历广度优先遍历(BFSTraverse):对图进行广度优先遍历第8页/共50页第九页,共50页。10107.2 图的存储(cn ch)结构 7.2.1 邻接矩阵邻接矩阵 邻接矩阵是表示邻接矩阵是表示(biosh)顶点之间相邻关系顶点之间相邻关系的矩阵。的矩阵。设设G=(V,E)是一个具有是一个具有n个顶点的图。它的顶个顶点的图。它的顶点集合点集合V=v0,v1,vn-1,则顶点间的关,则顶点间的关系系E可用如下形式的矩阵可用如下形式的矩阵A描述。描述。对于对于A中的每一个元素中的每一个元素aij满足:满足:第9页/共50页第十页,共50页。11117.
18、2.1 邻接矩阵【例7-2】对于图7-2(a)所示的无向图,请给出它的邻接矩阵,并根据邻接矩阵计算(j sun)顶点v2的度。第10页/共50页第十一页,共50页。12127.2.1 邻接矩阵 对于(duy)带权图(网),邻接矩阵A中的元素定义为:【例7-4】对于(duy)图7-5(b)所示的网,请给出它的邻接矩阵。第11页/共50页第十二页,共50页。13137.2.1 邻接矩阵 用用C语言描述的邻接矩阵:语言描述的邻接矩阵:#define MAXVEX 50/*最大顶点最大顶点(dngdin)个数个数*/typedef int weight;/*权值权值*/typedef structwe
19、ight arcsMAXVEXMAXVEX;/*邻接邻接矩阵矩阵*/DataType dataMAXVEX;/*顶点顶点(dngdin)信息信息*int vexs;/*顶点顶点(dngdin)数数*/MGraph,*AdjMetrix;第12页/共50页第十三页,共50页。14147.2.1 邻接矩阵 2.邻接矩阵的操作邻接矩阵的操作(cozu)(1)创建邻接矩阵)创建邻接矩阵 void CreateGraph(AdjMetrix g,int mMAXVEX,DataType d,int n)int i,j;g-vexs=n;for(i=0;idatai=di;for(j=0;jarcsij=
20、mij;第13页/共50页第十四页,共50页。15157.2.1 7.2.1 邻接矩阵(3)取第一个邻接)取第一个邻接(ln ji)点点int GetFirst(AdjMetrix g,int k)int i;if(kg-vexs)printf(参数参数k超出范围!超出范围!n);return-1;for(i=0;ivexs;i+)if(g-arcski=1)return i;return-1;第14页/共50页第十五页,共50页。16167.2.1 邻接矩阵(4)取下一个)取下一个(y)邻接点邻接点 int GetNext(AdjMetrix g,int k,int t)int i;if(k
21、g-vexs|tg-vexs)printf(参数参数k或或t超出范围!超出范围!n);return NULL;for(i=t+1;ivexs;i+)if(g-arcski=1)return i;return-1;第15页/共50页第十六页,共50页。17177.2.1 7.2.1 邻接矩阵(7)插入边)插入边 void InsertArc(AdjMetrix g,int u,int v,weight w)if(ug-vexs|vg-vexs)printf(参数参数(cnsh)u或或v超出范围!超出范围!n);return;g-arcsuv=w;(8)删除边)删除边 void DeleteArc
22、(AdjMetrix g,int u,int v)if(ug-vexs|vg-vexs)printf(参数参数(cnsh)u或或v超出范围!超出范围!n);return;g-arcsuv=0;第16页/共50页第十七页,共50页。18187.2.2 邻接(ln ji)表 邻接表是图的链式存储结构。邻接表由边表和顶点表组成邻接表是图的链式存储结构。邻接表由边表和顶点表组成邻接表是图的链式存储结构。邻接表由边表和顶点表组成邻接表是图的链式存储结构。邻接表由边表和顶点表组成边表:对图中的每个顶点建立的单链表,单链表中存放与同一个顶点相邻接的邻边表:对图中的每个顶点建立的单链表,单链表中存放与同一个顶
23、点相邻接的邻边表:对图中的每个顶点建立的单链表,单链表中存放与同一个顶点相邻接的邻边表:对图中的每个顶点建立的单链表,单链表中存放与同一个顶点相邻接的邻接点,相当于邻接矩阵中的一行接点,相当于邻接矩阵中的一行接点,相当于邻接矩阵中的一行接点,相当于邻接矩阵中的一行顶点表:存放图中每个顶点的信息以及指向该顶点边表的头指针顶点表:存放图中每个顶点的信息以及指向该顶点边表的头指针顶点表:存放图中每个顶点的信息以及指向该顶点边表的头指针顶点表:存放图中每个顶点的信息以及指向该顶点边表的头指针(zhzhn)(zhzhn)。顶点。顶点。顶点。顶点表通常采用顺序存储结构。表通常采用顺序存储结构。表通常采用顺
24、序存储结构。表通常采用顺序存储结构。边表的结点结构:边表的结点结构:边表的结点结构:边表的结点结构:adjvexadjvex为邻接点在顶点表中的序号,为邻接点在顶点表中的序号,为邻接点在顶点表中的序号,为邻接点在顶点表中的序号,nextnext指向下一个邻接点的指针指向下一个邻接点的指针指向下一个邻接点的指针指向下一个邻接点的指针(zhzhn)(zhzhn)。顶点表的结点结构:顶点表的结点结构:顶点表的结点结构:顶点表的结点结构:datadata存放顶点信息,存放顶点信息,存放顶点信息,存放顶点信息,headhead为边表头指针为边表头指针为边表头指针为边表头指针(zhzhn)(zhzhn)逆
25、邻接表:结构与邻接表完全相同,只是边表中每个结点存放的是每条弧的弧尾逆邻接表:结构与邻接表完全相同,只是边表中每个结点存放的是每条弧的弧尾逆邻接表:结构与邻接表完全相同,只是边表中每个结点存放的是每条弧的弧尾逆邻接表:结构与邻接表完全相同,只是边表中每个结点存放的是每条弧的弧尾顶点。顶点。顶点。顶点。第17页/共50页第十八页,共50页。19197.2.2 邻接(ln ji)表 C C语言描述的邻接表:语言描述的邻接表:语言描述的邻接表:语言描述的邻接表:#define MAXVEX 50#define MAXVEX 50typedef struct arc/*typedef struct a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 结构图 资料 学习 教案
限制150内