home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / dos / diverses / leda / src / graph_al / _dfs.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-11-15  |  1.3 KB  |  55 lines

  1. /*******************************************************************************
  2. +
  3. +  LEDA  2.1.1                                                 11-15-1991
  4. +
  5. +
  6. +  _dfs.c
  7. +
  8. +
  9. +  Copyright (c) 1991  by  Max-Planck-Institut fuer Informatik
  10. +  Im Stadtwald, 6600 Saarbruecken, FRG     
  11. +  All rights reserved.
  12. *******************************************************************************/
  13.  
  14.  
  15.  
  16. /*******************************************************************************
  17. *                                                                              *
  18. *  DFS  (depth first search)                                                   *
  19. *                                                                              *
  20. *******************************************************************************/
  21.  
  22.  
  23.  
  24. #include <LEDA/graph_alg.h>
  25. #include <LEDA/b_stack.h>
  26.  
  27. declare(b_stack,node)
  28.  
  29. list(node) DFS(const graph& G, node v, node_array(bool)& reached)
  30.   list(node)  L;
  31.   b_stack(node) S(G.number_of_nodes());
  32.   node w;
  33.  
  34.   if (!reached[v])
  35.    { reached[v] = true;
  36.      L.append(v);
  37.      S.push(v);
  38.     }
  39.  
  40.   while (!S.empty())
  41.    { v = S.pop(); 
  42.      forall_adj_nodes(w,v) 
  43.        if (!reached[w]) 
  44.         { reached[w] = true;
  45.           L.append(w);
  46.           S.push(w);
  47.          }
  48.     }
  49.  
  50.   return L;
  51.  
  52.