首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
设计一个算法,求无向图G(采用邻接表存储)的连通分量个数。
设计一个算法,求无向图G(采用邻接表存储)的连通分量个数。
admin
2013-07-12
77
问题
设计一个算法,求无向图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://jikaoti.com/ti/qVajFFFM
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
永嘉之乱的后果不包括()。
下列各项不是“南北议和”形成的原因的是()。
下列会议中,讨论有关对日本法西斯问题的有()。①开罗会议②德黑兰会议③雅尔塔会议④波茨坦会议
简述土地革命时期中共土地政策的演变过程。
简述当代科技革命发生的背景条件。
下面条约没有涉及德国的赔款问题的是()。
联共(布)“十五大”以后,新经济政策被逐步取消,根本上是由于()。
明治维新时期的土地改革,说法不正确的是()。
《齐民要求.序》中写道:“今采摭经传,爰及歌谣,洵之老成,验之行事,起自农耕,终于醯醢(酱醋),资生之靡不毕书书;号日《齐民要术》……舍本逐末,贤哲所非……故商贾之事,阙而不录。”这段材料表明作者()。①采取古今资料的编撰原则②
假设系统的所有资源是同类型的,系统中的进程每次申请资源数最多1个,那么,下面列出的4种情况中,()可能发生死锁。情况序号系统中进程数资源总量
随机试题
A.气胸、血胸B.腹胀、腹泻C.腹水、胸水D.低蛋白血症E.低脂血症肠内营养的并发症【】
Whatisintelligence(智力)anyway?WhenIwasinthearmyI【C1】______anintelligencetestthatallsoldierstook,and,against【C2】_
下列哪一项不属于B细胞的功能
男孩,8岁,被开水烫伤后4h送至急诊,患儿躯干前侧包括会阴部均为薄壁的大水疱,疼痛剧烈,双下肢红斑性改变该患儿双下肢损伤的深度达到
患者句某,女,3l岁。脘腹胀痛,泄泻不畅,小便短赤,舌苔黄腻,脉沉有力。治宜选用()
会计人员在思想上不思进取,学习上满足现状,缺乏提高专业技能的愿望,这是违反了爱岗敬业的会计职业道德规范。()
在投资中心的主要考核指标中,能使个别投资中心的利益与整个企业的利益统一起来的指标是()。
党的十八届三中全会提出赋予农民更多的财产权利。下列举措中能够通过扩大财产权利而使农民增收的是()。
使用CommonDialog控件的()方法,可显示“打印”对话框。
•Readthistexttakenfromanarticleaboutwholesalermarketingdecisions.•Choosethebestsentencetofilleachofthegaps.
最新回复
(
0
)