無向圖 深度優先遍歷 c語言實現
無向圖的深度優先遍歷的實現,無向圖用鄰接表表示無向圖的表示:鄰接矩陣和鄰接表。
程序使用的示例圖為:
實現要點:
每個節點有三種狀態-1,0,1,分別表示未發現,已經發現,已經處理。
代碼如下:<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;">
#include
#include
#include "graph_represent.h"
//後序遍歷圖
void DFS(struct vNode** adj,int v,int* color){
struct vNode* w;
color[v] = 0;
printf("%d ",v);/**在這裡前序處理節點**/
w = adj[v];
while(w != NULL){
if(color[w->value]==-1){
DFS(adj,w->value,color);
}
w = w->next;
}
/**這裡後序處理節點**/
color[v] = 1;
}
//參數:鄰接表,節點個數,開始節點,
void dfs_wraper(struct vNode** adj,int n,int s){
int* color = (int*)malloc(sizeof(int)*n);
int i;
for(i=0;i
這裡從2開始深度遍歷,結果為:2 0 1 3 5 4 6