课件1第85讲-小结_第1页
课件1第85讲-小结_第2页
课件1第85讲-小结_第3页
课件1第85讲-小结_第4页
课件1第85讲-小结_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第8章-小结(1) 1 图的逻辑结构 逻辑表示方式图形表示:直接用图表示二元组表示:G=(V,E),V为顶点集,E为边集1/21 逻辑特性顶点之间多对多关系无向关系 无向图有向关系 有向图数据结构中讨论的图是没有多重边的!顶点编号:0n-1012012(0,1)无向边出现两次有向边出现两次2/21 若无向图G(V,E)中含7个顶点,则保证图G在任何情况下都是连通的,则需要的边数最少是( )。 A. 6B. 15 C. 16 D. 21对于具有n个顶点的无向图,当其中n-1个顶点构成一个完全图时,再加上一条边(连接该完全图和另外一个顶点)必然构成一个连通图所以本题中,若 6个顶点构成一个完全图,

2、再加上一条边,这样的图无论如何都是一个连通图最少边数=(n-1)(n-2)/2+1=163/21下列关于无向连通图特征的叙述中,正确的是( )。I. 所有顶点的度之和为偶数II. 边数大于顶点个数减1III. 至少有一个顶点的度为1A. 只有IB. 只有IIC. I和D. I和III所有顶点的度之和 = 2e,为偶数 I正确。无向连通图中,en-1 II错误。无向连通图中,可能存在度为1 的顶点 III 错误。 A4/212 图的存储结构 图的两种主要存储方法邻接矩阵邻接表5/21 图两种存储方法的特点以下关于图的存储结构的叙述中正确的是 。A. 一个图的邻接矩阵表示唯一,邻接表表示唯一B.

3、一个图的邻接矩阵表示唯一,邻接表表示可能不唯一C. 一个图的邻接矩阵表示可能不唯一,邻接表表示唯一D. 一个图的邻接矩阵表示可能不唯一,邻接表表示可能不唯一一个图的邻接矩阵表示唯一邻接表表示可能不唯一(一个顶点相邻的所有顶点构成一个单链表,其中相邻顶点的节点顺序可以任意) B6/21以下关于图的存储结构的叙述中正确的是( )。A. 邻接矩阵占用的存储空间大小只与图中顶点数有关,而与边数无关B. 邻接矩阵占用的存储空间大小只与图中边数有关,而与顶点数无关C. 邻接表占用的存储空间大小只与图中顶点数有关,而与边数无关D. 邻接表占用的存储空间大小只与图中边数有关,而与顶点数无关无向图:用邻接矩阵存

4、储时,占用的存储空间大小为O(n2);用邻接表存储时,占用的存储空间大小为O(n+2e)。有向图:用邻接矩阵存储时,占用的存储空间大小为O(n2);用邻接表存储时,占用的存储空间大小为O(n+e)A7/213 图的遍历 遍历过程某种次序访问所有顶点不重复访问8/21深度优先遍历广度优先遍历 常用图遍历方法具有递归性图算法图查找图遍历9/21假设图采用邻接矩阵表示。设计一个从顶点v出发的深度优先遍历算法。0 1 0 1 11 0 1 1 00 1 0 1 11 1 1 0 11 0 1 1 0w找顶点v的相邻顶点w10/21int visitedMAXV; /全局变量,所有元素置初值0void

5、MDFS(MGraph g,int v) int w; printf(%d ,v); /访问顶点v visitedv=1; /置访问标记 for (w=0;we=G-n-1 树图?但G-e和G-n未知!对于无向连通图G,采用DFS,访问的顶点数vn为n,试探的边数en恰好为2e。一棵树en/2=vn-1或者en=2(vn-1)12/21int visitedMaxSize;void DFS2(ALGraph *G,int v,int &vn,int &en) ArcNode *p; visitedv=1; vn+;/遍历过的顶点数增1 p=G-adjlistv.firstarc; while

6、(p!=NULL) en+;/试探过的边数增1if (visitedp-adjvex=0) DFS2(G,p-adjvex,vn,en);p=p-nextarc; 13/21bool GIsTree(ALGraph *G) /判断无向图G是否是一棵树 int vn=0,en=0,i; for (i=0; iadjlistv.firstarc;/p指向顶点v的第一个邻接点 while (p!=NULL) w=p-adjvex;if (visitedw=0)/若顶点w未访问,递归访问它 Cycle(G,w,has);else/又找到了已访问过的顶点说明有回路 has=true;p=p-nextar

7、c;/找下一个邻接点 16/21bool HasCycle(ALGraph *G) /判断有向图G中是否有回路 bool has=false; for (int i=0;in;i+) Cycle(G,i,has);if (has) return true; return false;17/21 假设图G采用邻接表存储。设计一个算法,求不带权无向连通图G中距离顶点v最远的一个顶点。 BFS遍历算法应用示例vk最外圈中的任何一个顶点是最远的顶点BFS遍历完毕,队列中最后一个出队且没有相邻访问顶点的顶点k属于该圈中的顶点18/21int Maxdist(ALGraph *G,int v) ArcNode *p; int QuMAXV,front=0,rear=0;/队列及队头、尾指针 int visitedMAXV,i,j,k; for (i=0;in;i+)/初始化访问标志数组visitedi=0; rear+;Qurear=v;/顶点v进队 visitedv=1;/标记v已访问19/21 while (rear!=front) front=(front+1)%MAXV;k=Qufront;/顶点出队p=G-adjlistk.firstarc;/找第一个邻接点while (p!=NULL)/所有未访问过的邻接点进队 j=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论