首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
设计一个算法,求无向图G(采用邻接表存储)的连通分量个数。
设计一个算法,求无向图G(采用邻接表存储)的连通分量个数。
admin
2013-07-12
85
问题
设计一个算法,求无向图G(采用邻接表存储)的连通分量个数。
选项
答案
解法一:采用深度优先遍历方法。算法如下: # define MAX_VERTEX NUM 20 //最大顶点数为20 typedef struct ArcNode{ //边表结点 int adjvex; //邻接点域 struct ArcNode*nextarc; //指向下一个邻接点的指针域 //若要表示边上信息,则应增加一个数据域info )ArcNode; tvpedef struct VNode{ //顶点表结点 VertexType data: //顶点域 ArcNode *firstarc; //边表头指针 }VNode,AdjList[MAX VERTEX—NUM]; //AdjList是邻接表类型 typedef struct{ AdjList adjlist; //邻接表 int veXnulTl.arcnum; //顶点数和边数 }ALGraph: //ALGraph是以邻接表方式存储的图类型 void DFS(ALGraph G,int V){ ArcNode*P: visitedrv]=1; //置已访问标记 prinf(“%d”,v); //输出被访问顶点的编号 p=G->adjlist[v].firstarc; //p指向顶点V的第一条边的终结点 while(P!=NULL){ if(visited[p一>adjvex]==0) //若P一>adjvex顶点未访问,递归访问它 DFS(G,P->adjvex); p=p->nextarc; //p指向顶点v的下一条边的终结点 } } int ConnNuml(ALGraph G){ //求图G的连通分量 int i,num=0; for(i=0;i
n;i++) visited[i]=0; for(i=0;i
n;i++) if(visited[i]==O){ DFS(G,i); //调用DFS算法 num++: } return(num); } 解法二:采用广度优先遍历方法。算法如下: void BFS(ALGraph G.int V){ ArcNode*P; int Qu[MAX VERTEX_NUM2,front=0,rear=0; //定义循环队列并初始化 int w,i; for(i:0;i
n;i++)visited[i]=0; //访问标志数组初始化 Drinf(“2%d”,v); //输出被访问顶点的编号 visitedrv]=1; //置已访问标记 rear=(rear+1)%MAX_VERTEX_NUM; QuErear]=v: //v入队 while(front!=rear){ //若队列不空时循环 front=(front+1)%MAX_VERTEX_NUM w=Qu[front]; //出队并赋予W P=G->adjlist[w].firstarc; //找与顶点W邻接的第一个顶点 while(p!=NULL){ if(visited[p->adjvex]==0){ //若当前邻接顶点未被访问 printf(”%2d”,P->adjvex); //访问相邻顶点 visited[p->adjvex]=1; //置该顶点已被访问的标志 rear=(rear+1)%MAX_VERTEX_NUM) //该顶点入队 Qu[rear]=P->adjvex; } P=P-nextarc; //找下一个邻接顶点 } ) printf(“\n”); int ConnNum2(ALGraph G){ //求图G的连通分量 int i,num=0; for(i=0:i
n;i++) visited[i]=0; for(i=0;i
n;i++) if(visited[i]==O){ BFS(G,i); //调用BFS算法 num++: return(num); }
解析
本题主要考查图的遍历的应用。对于无向图来说,深度优先遍历或者是广度优先遍历,若无向图是连通图,则一次遍历能够访问到图中的所有顶点,但若无向图是非连通图,则只能访问到初始点所在连通分量中的所有顶点,其他连通分量中的顶点是不可能访问到的。为此需要从其他每个连通分量中选择初始点,分别进行遍历,才能够访问到图中的所有顶点。因为在选择初始点的同时加上计数器,最后计数器的值即为连通分量个数。
转载请注明原文地址:https://kaotiyun.com/show/1rxi777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
第二次鸦片战争后,根据不平等条约开放对外通商口岸最多的省是()。
1931年。英国被迫承认自治领在内政外交上都独立自主的根本原因是()。
第二次世界大战后美国经济状况方面的主要变化是什么?
论述1931—1941年英美远东政策的变化及对中国的影响。(2014年统考真题)
简述第二国际建立的历史条件。
在阿拉伯()统治时期,阿拉伯军队曾与当时中国的唐朝军队发生冲突。
俄罗斯的私有化进程始于()年。
在下列各项中,哪些属于苏俄实行“新经济政策”的前提条件?()。①有巩固的工农联盟②国家掌握了一切经济命脉③国民经济已明显恢复④帝国主义武装干涉已被粉碎
电子计算机的发展经过了:①电子数值积分计算机(ENIAC)②集成电路计算机③大规模集成电路汁算机④晶体管计算机⑤人工智能计算机其先后顺序是()。
在请求页式系统中,一程序的页面走向(访问串或引用串)为2,3,4,5,2,3,6,2,3,4,5,6,设分配给该程序的存储块数为m。试分别计算m=3和m=4时,FIFO和LRU两种替换算法的缺页(页故障)数,并给出:结果说明了什么?
随机试题
在英格兰皇家督学处,任皇家督学处处长的是()
现代医学模式对临床诊治工作道德的影响主要表现在
"水不涵木"属于"木火刑金"属于
案情:甲、乙国有企业与另外7家国有企业拟联合组建设立永发有限责任公司(以下简称永发公司)。公司章程的部分内容是:公司股东会除召开定期会议外,还可以召开临时会议,临时会议须经代表1/2以上表决权的股东、1/2以上的董事或1/2以上的监事提议召开。在申请公司设
防潮层常用的施工方法除捆扎法外,还有()。
以下关于消极型管理和积极型管理的说法正确的是()。
资产组合和分散化投资的基本目的之一是提高预期收益或者降低预期损失。()
甲公司以欺诈手段骗得乙公司与之订立合同,乙公司因而签发一张汇票给甲公司,随后甲公司将汇票背书转让给丙公司。汇票到期前,乙公司发现受骗,即向法院申请撤销与甲公司的合同。如果合同被撤销,下列说法中,正确的是()。
陈述性知识的学习过程是将新的命题与命题网络中的有关命题联系起来,在这一过程中,学习者要对信息进行精加工。()
A、Hesawtheofficeonhiswayhomefromwork.B、AfriendreferredhimtoDr.Carter’soffice.C、HefoundDr.Carter’snumber
最新回复
(
0
)