1,深度优先搜索
Boolean visited[MAX];
Status(*VisitFunc)(int v);
void DFSTraverse(Graph G,Status(*Visit)(int v)){
VisitFunc=Visit;
for(v=0;v<G.vexnum;++v)visited[v]=FALSE;InitQueue(Q);
for(v=0;v<G.wexnum;++v)
if(!visited[v]) DFS(G,v);}
void DFS(Graph G,int v){
visited[v]=TURE;VisitFunc(v);
for(w=FirstAfjVex(G,v);w>=0;w=NextAdjVex(G,v,w))
if(!visited[w])DFS(G,W);}
2,广度优先搜索
void BFSTraverse(Graph G,Status(*Visit)(int v)){
for(v=0;v<G.vexnum;++v)visited[v]=FALSE;InitQueue(Q);
for(v=0;v<G.wexnum;++v)
if(!visited[v]) {
visited[v]=TRUE;Visit(v);EnQueue(Q,v);while(!QueueEmpty(Q)){
DeQueue(Q,u);
for(w=FirstAdjVex(G,v);w>=0;w=NextAdjVex(G,u,w))
if(!visited[w]) {
visited[w]=TRUE;Visit(w);EnQueue(Q,w);}}
}}