//DFS algo void dfs(const int G[MAX][MAX],const int V,int startNode){ void dfs_util(const int[MAX][MAX],const int,int,bool*); //dfs_util declaration so that it is not viewable by any other function bool *visited=(bool*)calloc(V,sizeof(bool)); for(int i=0;i<V;i++) visited[i] = false; dfs_util(G,V,startNode,visited); }
//A utility function for dfs() void dfs_util(const int G[MAX][MAX],const int V,int u,bool *visited){ //Mark the current node as visited visited[u] = true; printf("%5d",u); for(int i=0;i<V;i++){ if(!visited[i] && G[u][i]) dfs_util(G,V,i,visited); } }
void Graph::dfs() { bool visited[SIZE] = {false}; std::cout<<std::endl; for (int i = 0; i < size; i++) { if (!visited[i]) dfs_util(i, visited); } std::cout<<std::endl; }
int dfs_util(int a, int b) { // printf("%d->",a); visited[a] = 1; if(a==b) return 1; int i; for(i=0; i<ind[a]; i++) { if(!visited[adj_list[a][i]]) if(dfs_util(adj_list[a][i] ,b)) return 1; } return 0; }
void Graph::dfs_util(int start,bool visited[]) { visited[start] = true; std::cout << start << " "; Node<int> *curr = array[start].gethead(); while(curr!=NULL) { if(!visited[curr->getData()]) dfs_util(curr->getData(),visited); curr = curr->getNext(); } }
int dfs(int a, int b) { reset(); return dfs_util(a,b); }