##1。广度优先搜索(BFS)
bool visited[Max_vertex_num];
void BFSTraverse(Graph G) {
for (int i = 0; i < G.vexnum; ++i)
visited[i] = false; // 访问数组初始化
InitQueue(Q);
for (int i = 0; i < G.vexnum; ++i)
{
if(!visited[i])
BFS(G, i); // 访问
}
}
void BFS(Graph G, int v) {
visit(v);
visited[v] = true;
while(!isEmpty(Q)) {
DeQueue(Q, v);
for (w = FirstNeighbor(G, v); w >= 0; w = NextNeighbor(G, v, w)) // 检查所有邻接点
{
if(!visited[w]) {
visit(v);
visit[w] = true;;
EnQueue(Q, w); // 顶点w入队列
} // if
}// for
}// while
}// BFS
##2。BFS求解单源最短路径问题
const int Int_max = 0x7fffffff;
void BFS_mindist(Graph G, int u) {
for (int i = 0; i < G.vexnum; ++i)
d[i] = Int_max; // 初始化初始路径长度
visited[u] = true;
d[u] = 0;
EnQueue(Q, u);
while(!isEmpty(Q)) {
DeQueue(Q, u); // 队头出列
for (w = FirstNeighbor(G, u); w >= 0; w = NextNeighbor(G, u, w))
{
if(!visited[w]) { // 访问尚未访问的邻接顶点
visited[w] = true;
d[w] = d[u] + 1; // 路径长度+1
EnQueue(Q, w); // 顶点入队
} // if
}// for
}// while
}
##3。深度优先搜索(DFS)
// 递归形式
bool visited[Max_vertex_num];
void DFSTraverse(Graph G