首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
设计一个算法,求无向图G(采用邻接表存储)的连通分量个数。
设计一个算法,求无向图G(采用邻接表存储)的连通分量个数。
admin
2013-12-31
38
问题
设计一个算法,求无向图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_NUM]; //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 ConnNum1(ALGraph G){ //求图G的连通分量 int i,num=0; for(i=0;i<G->n;i++) visited[i]=0; for(i=0;i<G->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<G->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<G->n;i++) visited[i]=0; for(i=0;i<G->n;i++) if(visited[i]==0){ BFS(G,i); //调用BFS算法 num++: } return(num); }
解析
转载请注明原文地址:https://kaotiyun.com/show/5vxi777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
二战后的半个世纪中,资本主义各国经济史上的五个周期阶段。
分析父系氏族公社的经济生活和社会组织。
体格拉特.帕拉沙尔三世改革的主要内容及其结果。
简述鸦片战争的三个阶段。
论述十字军运动(十字军东征)发生的背景、过程及其影响。
洪秀全以宗教手段组织起义,主要利用的是()。
鄢陵之战的交战双方是()。
把中国第一次工人运动的高潮推向顶点的是()。
已知一组关键字为(26,36,41,38,44,15,68,12,6,51,25),用链地址法解决冲突。假设装填因子a=0.75,散列函数的形式为H(K)=KMODP,回答下列问题:(1)构造散列函数。(2)画出散列表。(
下列选项中,对正确接收到的数据帧进行确认的MAC协议是____。
随机试题
下列说法正确的是
2012年3月31日甲公司应付某金融机构一笔贷款100万元到期。因发生财务困难,短期内无法支付。当日,甲公司与金融机构签订债务重组协议,约定减免甲公司债务的20%,其余部分延期两年支付,年利率为5%(相当于实际利率),利息按年支付。金融机构已为该项贷款计提
在西方教育史上,被认为是现代教育的代言人的教育家是()
秦朝的中央集权制,汉朝的“罢黜百家,独尊儒术”,隋朝创立科举制度,从教育目的的理论角度来说,属于()。
alternativeenergy
地理学家和历史学家过去一直持有的观点认为南极是在1820年左右第一次被发现的。但是有些16世纪的欧洲地图上显示着与南极相似的一片区域,虽然那时的探险家从未见到过它。因此,有些学者争论说该大陆是被古代人发现并被画到地图上的,而大家知道这些古代人的地图曾为欧洲
有如下程序:#include<iostream>usingnamespacestd;classshapes{protected:intx,y;public:void
Whatdoesthewomanwanttodo?
A、 B、 C、 B
Accordingtothepassage,girlsarevictimsofthegendergapintechnologybecause______.Theresearchongirlsandcomputers
最新回复
(
0
)