//邻接表DFS
void Visit(Vertex V){
printf("正在访问结点%d\n",V);
}
//Visited[]全局变量,初始时全部置为false
void DFS(LGraph Graph,Vertex V,void(*Visit)(Vertex)){
PtrToAdjVNode W;
Visit[V];
Visited[V] = true;
for(W = Graph->G[V].FirstEdge;W;W = W->Next){
if(!Visited[W->AdjV]){
DFS(Graph,W->AdjV,Visit);
}
}
}
//邻接矩阵BFS
bool IsEdge(MGraph Graph,Vertex V,Vertex W){
return Graph->G[V][W]<INFINITY ? true :false;
}
void BFS(MGraph Graph,Vertex S, void(*Visit)(Vertex)){
Queue Q;
Vertex V,W;
Q = CreateQueue(MaxSize);
Visit(S);
Visited[S] = true;
AddQ(Q,S);
while(!IsEmpty(Q)){
V = DeleteQ(Q);
for(W=0;W<Graph->Nv;W++){
if(!Visited[W] && IsEdge(Graph,V,W)){
Visit(W);
Visited[W] = true;
AddQ(Q,W);
}
}
}
}
数据结构——遍历图总结(中国大学mooc)
最新推荐文章于 2022-03-04 15:27:57 发布