(
typedef enum{FALSE
Boolean visited[MaxVertexNum]; //訪問標志向量是全局量
void DFSTraverse(ALGraph *G)
{ //深度優先遍歷以鄰接表表示的圖G
int i;
for(i=
visited[i]=FALSE; //標志向量初始化
for(i=
if(!visited[i]) //v i 未訪問過
DFS(G
}//DFSTraverse
(
void DFS(ALGraph *G
//以v i 為出發點對鄰接表表示的圖G進行深度優先搜索
EdgeNode *p;
printf(
visited[i]=TRUE; //標記v i 已訪問
p=G
while(p){//依次搜索v i 的鄰接點v j
if (!visited[p
DFS(G
p=p
}
}//DFS
(
void DFSM(MGraph *G
{ //以vi為出發點對鄰接矩陣表示的圖G進行DFS搜索
int j;
printf(
visited[i]=TRUE;
for(j=
if(G
DFSM(G
}//DFSM
注意
遍歷操作不會修改圖G的內容
指針類型
From:http://tw.wingwit.com/Article/program/sjjg/201311/23838.html