DFS(深度优先搜索)
void DFS (Graph G, int i){
int j;
visited[i] = true;
printf("%c\n", G.vexs[i]);
for (int j = 0; j < G.numVert; ++j)
{
if(!visited[j] && G.arc[i][j] == 1){
DFS(G, j);
}
}
}
void DFSTraverse (MGraph G){
int i;
for (int i = 0; i < G.numVert; ++i)
{
visited[i] == false;
}
for (int i = 0; i < G.numVert; ++i)
{
if(!visited[i])
DFS(G, i);
}
}
BFS
void BFSTraverse (MGraph G){
int i, j;
Queue Q;
for (int i = 0; i < G.numver; ++i)
{
visited[i] = false;
}
initQueue(Q);
for (int i = 0; i < G.numver; ++i)
{
if(!visited[i]){
visited[i] = true;
printf("%c\n", G.vexs[i]);
enqueue(Q,i);
while(!QueueEmpty()){
Dequeue(Q, i);
for (int j = 0; j < G.numver; ++j)
{
if(G.arc[i][j] == 1 && !visited[j]){
visited[j] = true;
printf("%c\n", G.vexs[j]);
enqueue(Q,j);
}
}
}
}
}
}