bool visited[Maxsize];
SqQueue Q;
int Num(Graph G)
{
int i;
int num=0;
for(i=0;i<G.vexnum;i++)
visited[i]=false;
InitQueue(Q);
for(i=0;i<G.vexnum;i++)
if(!visited[i])
{
num++;
BFS(G,i);//或使用DFS
}
}
void BFS(Graph G,int v)
{
int p;
visited[v]=true;
EnQueue(Q,v);
while(!IsEmpty(Q))
{
DeQueue(Q,p);
for(w=Firstneighbor(G,v);w>=0;w=Nextneighbor(G,v,w))
if(!visited[w])
{
visited[v]=true;
EnQueue(Q,w);
}
}
}