首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
设计一个算法,求无向图G(采用邻接表存储)的连通分量个数。
设计一个算法,求无向图G(采用邻接表存储)的连通分量个数。
admin
2012-06-26
99
问题
设计一个算法,求无向图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
学硕统考专业
相关试题推荐
下列不是美国独立战争与美国内战的相同点的是()。
国民党政府宣布民盟为“非法团体”,民盟总部被迫解散的时间是()。
巴黎和会讨论的中心问题是()。
第二次鸦片战争后,根据不平等条约开放对外通商口岸最多的省是()。
1949年6月,毛泽东发表了系统阐明中国共产党关于建立新中国主张的()。
论述彼得一世改革的背景、措施及影响
评述欧洲一体化的历史进程。(华东师范大学1998年世界当代史真题)
论述十字军运动(十字军东征)发生的背景、过程及其影响。
对三国鼎立到隋朝重新统一全国这段历史时期的政局,叙述正确的是()。①只有西晋有过短暂的统一②大多数时间是多个政权分立、南北对峙的复杂政局③西晋、北魏、东晋都有过短暂的统一④除三国分立以外,其他时间基本上处于统
“土木之变”是明与()之间的冲突导致的。
随机试题
()的积累、整编、审定等工作是在工程文档资料基础上随着单项工程验收、全面竣工同步进行的。
工业安装工程质量验收评定为“不合格”时,工程处理的办法包括()。
根据《中华人民共和国刑法修正案(六)》,期货公司违背受托义务,擅自运用客户资金或者其他委托、信托的财产,可能被判处罚金。()
到目前为止,国内银行对项目进行评估时,基本上采用以银行工作人员为主进行评估的模式,很少邀请与项目有关的技术及管理专家参加评估工作,这种评估模式在一定程度上影响了项目评估质量。()
上海市东濒东海,南临杭州湾,西接江苏、浙江两省,北界长江入海口,长江与东海在此连接。()
男,26岁,大学学历,汉族,私企部门经理。求助者自述:从小性格较内向,不爱说话。生活在很传统的家庭,父母是小学教师,感情融洽。但对他管教很严厉,从小要求他做一个懂事规矩的孩子,做任何事情都要做到最好,养成了做事情按部就班、追求完美的习惯。遇到做不好
有歌手表Singer(编号,姓名,性别,年龄,音乐类型1,音乐类型2),现要求把表中"音乐类型2"列删除,正确的SQL命令是( )。
数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下面图符名标识的图符不属于数据流图合法图符的是
下列叙述中正确的是
Women-centeredHistoryInthepast,mostpeoplebelievedthatthecontributionswomenhavemadetoUShistoryhavebeenignored
最新回复
(
0
)