DFS遍历

来源:互联网 发布:登录淘宝帐号 编辑:程序博客网 时间:2024/05/01 19:33

深度优先搜索:递归实现方向:

#include <stdio.h>#include <string.h>const int GNumber = 8;int G[GNumber][GNumber];int visit[GNumber];void DFS_Visit(int G[][GNumber], int i, int n){int j; visit[i] = 1; for(j = 0; j < n; j++) {  if(G[i][j] && !visit[j])  {   printf(" V%d ", j + 1);   visit[j] = 1;    DFS_Visit(G, j, n);  } }}//防止出现未联通图void DFS(int G[][GNumber], int n){ int i; memset(visit, 0, sizeof(visit)); for(i = 0; i < n; i++) {  if(!visit[i])  {   printf(" V%d ", i + 1);   DFS_Visit(G, i, n);   printf("\n");  } }}int main(){ FILE *fr;int i,j; fr = fopen("dfs.txt","r"); if(!fr) {  printf("fopen failed\n");  return -1;  } while(fscanf(fr,"%d%d", &i, &j) != EOF) {  G[i-1][j-1] = 1;  G[j-1][i-1] = 1; } DFS(G,GNumber); getchar(); return 0;}