首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
设计一个算法,求无向图G(采用邻接表存储)的连通分量个数。
设计一个算法,求无向图G(采用邻接表存储)的连通分量个数。
admin
2012-06-26
56
问题
设计一个算法,求无向图G(采用邻接表存储)的连通分量个数。
选项
答案
解法一:采用深度优先遍历方法。算法如下: #define MAX_VERTEX_NUM 20 //最大顶点数为20 typedef struct ArcNode{ //边表结点 int adjvex; //邻接点域 struct ArcNode*nextarc; //指向下一个邻接点的指针域 //若要表示边上信息,则应增加一个数据域info }ArcNode; typedef struct VNode{ //顶点表结点 VertexType data; //顶点域 ArcNode *firstarc; //边表头指针 }VNode,AdjList[MAX_VERTEX_NUM3; //AdjList是邻接表类型 typedef struct{ AdjList adjlist; //邻接表 int vexnum,arcnum; //顶点数和边数 }ALGraph; //ALGraph是以邻接表方式存储的图类型 void DFS(ALGraph G,int v){ ArcNode*P: visited[v]=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]==0){ DFS(G,i); //调用DFS算法 num++; } return(num); } 解法二:采用广度优先遍历方法。算法如下: void BFS(ALGraph G,int v){ ArcNode*p; int Qu[MAX VERTEX_NUM],front=0,rear=0; //定义循环队列并初始化 int w,i; for(i=0;i
n;i++) visited[i]=0; //访问标志数组初始化 prinf(”2%d”,v); //输出被访问顶点的编号 visited[v]=1; //置已访问标记 rear=(rear+1)%MAx_VERTEX NUM; Qu[rear]=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]==0){ BFS(G,i); //调用BFS算法 num++: } return(num); }
解析
本题主要考查图的遍历的应用。对于无向图来说,深度优先遍历或者是广度优先遍历,若无向图是连通图,则一次遍历能够访问到图中的所有顶点,但若无向图是非连通图,则只能访问到初始点所在连通分量中的所有顶点,其他连通分量中的顶点是不可能访问到的。为此需要从其他每个连通分量中选择初始点,分别进行遍历,才能够访问到图中的所有顶点。因为在选择初始点的同时加上计数器,最后计数器的值即为连通分量个数。
转载请注明原文地址:https://kaotiyun.com/show/zfxi777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
汉武帝时期,在民族关系上采取了一系列措施,其中不包括()。
下列不属于清统治者加强文化专制和思想控制的是()
明代中后期,随着工商业的发展和南北经济联系的加强,在江南地区,自宋元以来初露端倪的新的城市类型——()得到很快的发展。
文艺复兴运动兴起的时间是()。
在美国独立过程中,极力地宣传美国国家独立思想的民主主义者是()。
简述蒙古西征的具体过程及其对中亚等地区的影响。(东北师范大学1999年世界中古史真题;南京大学2001年综合卷真题;东北师范大学2002年世界中古史真题)
西藏自治区的设立时间是()。
对苏联高度集中的体制的客观评价是()。①基本上适应苏联当时的生产力发展水平②这种体制有严重缺点和弊端③后来这种体制阻碍了苏联国民经济的发展④这种体制在历史上起过积极的作用
某定点机字长8位(含1位符号位),现该机中一个寄存器的内容为43H,则将其算术左移一位、算术右移一位的结果分别为()。
荷兰国旗问题:设有一个仅红、白、蓝三种颜色的条块组成的条块序列,请编写一个时间复杂度为O(n)的算法,使得这些条块按红、白、蓝的顺序排好,即排成荷兰国旗图案。
随机试题
李某、阮某持某外国护照,涉嫌贩卖毒品罪被检察机关起诉至某市中级法院,关于李某、阮某的诉讼权利及本案诉讼程序,下列说法正确的是(2011—卷二—95,任)
实验犬,雄性,24月龄,体重12.5kg,为进行某药物在增加急性心源性休克的心排出量作用实验中,需制备急性心源性休克模型犬,所采用静脉注射方法应选
A.某地一些临床名家自发组织了X俱乐部,其活动宗旨是:定期聚会,坦诚交待自己误诊误治的情况并互相交流体会B.一位急诊病人被送到医院,因此满身血污,其他病人及其家属见了忙掩鼻躲开,而应诊医护人员则顾不得脏不脏,出于责任心赶紧给病人做检查和处置C.某科室常
良性颅内肿瘤几乎唯一有效的治疗方法为
下列含有马钱子的中成药有
对药品分别按处方药与非处方药进行分类管理是根据
已知实数x,y满足:3(x3+y3+1)=(x-y+1)3,x2014+y2014=?
评述希波战争。
InalabinOxfordUniversity’sexperimentalpsychologydepartment,researcherRoiCohenKa-doshistestingarelativelynewbra
Ifitwereonlynecessarytodecidewhethertoteachelementarysciencetoeveryoneonamassbasisortofindthegiftedfewan
最新回复
(
0
)