无向图 深度优先遍历 c语言实现

无向图的深度优先遍历的实现,无向图用邻接表表示无向图的表示:邻接矩阵和邻接表。

程序使用的示例图为:

实现要点: 每个节点有三种状态-1,0,1,分别表示未发现,已经发现,,已经处理。

代码如下:

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<n;i++){color[i] = -1; //将所有的顶点设置为未发现状态。}DFS(adj,s,color);/*假设图是连通的,不连通时,调用下面代码即可for(i=0;i<n;i++)DFS(adj,i,color);*/printf(“\n”);}void main(){//获得默认图,一共有7个节点int n = 7;struct vNode** adjVertics = default_wraper();printf(“\ndeepth first search:\n”);dfs_wraper(adjVertics,n,2); //从2开始遍历}

这里从2开始深度遍历,结果为:2 0 1 3 5 4 6

谁也不跟谁一辈子,有些事情没必要记在心上。

无向图 深度优先遍历 c语言实现

相关文章:

你感兴趣的文章:

标签云: