利用邻接矩阵实现图的BFS和DFS

#include <iostream>
using namespace std;

#define Maxsize 100
typedef char VertexType;
typedef int EdgeType;

type struct{
	VertexType Vex[Maxsize];
	EdgeType edge[Maxsize][Maxsize];
	int vexnum,arcnum;
}MGraph;

bool visited[Maxsize];
void BFS(MGraph *G,int v){
	int i;
	Queue Q;
	InitQueue(Q);
	visit(v);
	visited[v]=True;
	Enqueue(&Q,v);
	while(!IsEmpty(Q)){
		Dequeue(&Q,v);
		for(i=0;i<G->vexnum;i++)
			if(visited(i)==False&&G->edge[v][i]){
				visit(i);
				visited[i]=True;
				Enqueue(&Q,i);
			}
	}
} 

void DFS(MGraph *G,int v){
	visit(v);
	visited[v]=True;
	int i;
	for(i=0;i<G->vexnum;i++){
		if(G->edge[v][i]&&visited[i]==False)
			DFS(G,i);
	}
}

猜你喜欢

转载自blog.csdn.net/KK_2018/article/details/109756423