试编写求无向图G的连通分量的算法。要求输出每一连通分量的顶点值。(设图G已用邻接表存储) 50

我有一个答案了,但是不是很明白希望可以有人给我用通俗点的语言解释清楚,最好你可以再给我一个算法~!voiddfs(intv){visited[v]=1;printf("%... 我有一个答案了,但是不是很明白希望可以有人给我用通俗点的语言解释清楚,最好你可以再给我一个算法~!
void dfs ( int v)
  {
   visited[v]=1; printf ("%3d",v); //输出连通分量的顶点
   p=g[v].firstarc;
   while (p!=null)
  {
   if(visited[p->adjvex]==0)
   dfs(p->adjvex);
   p=p->next;
   }
  }

  void Count(AdjList g) //求图中连通分量的个数
  {
  int k=0 ;
  for (i=1;i<=n;i++ )
  if (visited[i]==0)
   {
   printf ("\n第%d个连通分量:\n",++k);
   dfs(i);
   }
  }
还有下面这两个结构体里面的内容,例如adjvex//该弧所指向的顶点的位置是什么意思?(是指向下一个顶点么??)每个带注释的都帮忙解释下~!
#include <stdio.h>
#include <iostream.h>
#include <malloc.h>
#define max 20

int visited[max];
int w;
typedef struct arcnode
{
int adjvex;//该弧指向的顶点的位置
struct arcnode *nextarc;//弧尾相同的下一条弧
char *info;//该弧信息
}arcnode;
typedef struct vnode
{
char data;//结点信息
arcnode *firstarc;//指想第一条依附该结点的弧的指针
}vnode,adjlist;
展开
罗素似下沙
2014-12-11
知道答主
回答量:45
采纳率:0%
帮助的人:21万
展开全部
你肯定还没看懂邻接表,adjvex就是顶点的数组地址,每个顶点都有自己的物理地址,通过数组来存储比较方便操作,不然怎么找到它,你想想。至于前面的算法,我想你看懂了邻接表之后看算法很简单了,这算法没什么技术含量。就是直接利用邻接表的特点
匿名用户
2011-11-27
展开全部
映了三
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式