首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
设计一个算法,求无向图G(采用邻接表存储)的连通分量个数。
设计一个算法,求无向图G(采用邻接表存储)的连通分量个数。
admin
2013-12-31
36
问题
设计一个算法,求无向图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
学硕统考专业
相关试题推荐
试论述张骞出西域和郑和下西洋的历史背景比较以及主要史实内容、历史影响。
关于伯里克利时代的叙述,不正确的是()。
标志着清政府被迫放弃闭关政策,开始面向世界,基本上完成了从传统的理藩向近代外交转化的事件是1861年()。
中共十六届五中全会提出,建设社会主义新农村的要求是生产发展和()。
《汉谟拉比法典》中规定:如果奴隶胆敢对主人说:“你不是我的主人。”他的耳朵就要被割掉。这部法典诞生于()。
利玛窦与徐光启合作翻译的(),介绍了曾经流行于欧洲的欧几里得平面几何的系统理论,大大地丰富了中国古代几何学的内容。
十六国时期的历史,可以划分为前后两个时期,其分界线是()。
电子计算机的发展经过了:①电子数值积分计算机(ENIAC)②集成电路计算机③大规模集成电路汁算机④晶体管计算机⑤人工智能计算机其先后顺序是()。
中国第一条自行设计修建的铁路是在()。
1852年,英国驻广州代办密切尔说:“经过和这么一个大国开放贸易十年之久,并且双方都已废除了一切独占制度,而拥有如此庞大人口的中国,其消费我们的制品竟不及荷兰的一半……这好像是一个奇怪的结局。”这是因为()。
随机试题
棘层松解主要见于
朱砂既能镇心安神,又能
关于蛋白质变性和沉淀关系的叙述,哪项是正确的
铁的吸收部位主要在空肠后段和回肠。()
道教中,供奉道教最高尊神的殿堂是()。
社会工作者想对于服务对象和周围他人之间互动交流的方式进行资料收集,此时社会工作者适合运用()的方法。
就业平等权是指公民不论其民族、种族、性别、宗教信仰、家庭背景等的不同和差异,均享有平等获得就业机会的权利。根据上述定义,下列没有侵犯求职者的就业平等权的是()。
下列属于违反治安管理行为的是()。
•Readtheletterbelowfromanagencyprovidingtemporarystaffforcompanies.•ChoosethecorrectwordA,B,CorDfrombelo
StatisticsfromChina(1)bemindboggling:1.2billion(2),1.73trillioncigarettessmokedinayear,7,000different(3)of
最新回复
(
0
)