试编写求无向图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; 展开
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; 展开
2个回答
2011-11-27
展开全部
映了三
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询