| shape_doc 0.1 | 
#include <graph.hpp>
| GraphDfsIter< T > * createIterator | ( | ) | const | 
Definition at line 305 of file graph.hpp.
{
  return new GraphDfsIter<T>(this);
}
| void delete_edge | ( | T | v_val, | 
| T | e_val | ||
| ) | 
| void delete_vertex | ( | T | val | ) | 
Deletes a vertex and all incident edges.
Definition at line 501 of file graph.hpp.
References head.
{
  if(head==NULL)
    return;
  nvertices--;
  
  gNode<T>* e=head;
  
  // Delete edges from other vertices lists
  while(e!=NULL)
     {
       delete_edge(e->data,v_val);
       e=e->vlist;
     }
  
  // Delete incident edges
  e=head;
  while(e!=NULL)
     {
       delete_edge(v_val,e->data);
       e=e->vlist;
     }
  
  //Delete Vertex
  if(head->data==v_val)
  {
    gNode<T>* temp=head;
    head=head->vlist;
    delete temp;
    return;
  }
  
  gNode<T>* p1=head->vlist;
  gNode<T>* p2=head;
  
  while(p1!=NULL)
  {
    if(p1->data==v_val)
    {
      p2->vlist=p1->vlist;
      p1=NULL;
      delete p1;
      return;
    }
    p2=p1;
    p1=p1->vlist;
  }
}
| void dfs | ( | Seq< T > & | out | ) | 
| void dfs | ( | func | fp | ) | 
DFS traversal (run operation fp on nodes)
Definition at line 602 of file graph.hpp.
References head, and gNode< T >::status().
Referenced by mmx::shape::print_boxes().
| gNode< T > * dfs | ( | test_node | fp | ) | 
DFS search (find a node that satisfies test fp)
Definition at line 705 of file graph.hpp.
References head, NODESTACK, and gNode< T >::status().
{
  gNode<T>* t=head;
  
  while(t!=NULL)
  {
    t->status(-1);
    t=t->vlist;
  }
  
  t=head;
  while(t!=NULL)
  {
    if (t->status()==-1) 
    {
      NODESTACK q;
      gNode<T> * s;
      
      q.push(t);
      t->status(0);    // mark as visited
      
      while ( !q.empty() )
      {
        s=q.top();
        q.pop();
        
        if (fp!=NULL)
          if ( (*fp)(s) ) // check node
            return s;
        
        while(t->next!=NULL)
        {
          if (t->next->status()==-1)
          {
            t->status(0); // mark as visited
            q.push(t->next->start); 
          }
          
          t=t->next;
        }
      }
    }
    t=t->vlist;
  }
  
  return NULL;
}
| void dfs_walk | ( | gNode< T > * | s, | 
| Seq< T > & | out | ||
| ) | 
Definition at line 673 of file graph.hpp.
References NODESTACK, and gNode< T >::status().
{
  NODESTACK q;
  gNode<T> * t;
  
  q.push(s);
  
  while ( !q.empty() )
  {
    t=q.top();
    q.pop();
    if ( t->status()==-1)
    {
    out<< t->data; // output node data
    t->status(0); // mark as visited 
    }
     while(t->next!=NULL)
     {
       if ( t->next->status() == -1 )
       {
         q.push(t->next->start); 
       }
       t=t->next;
     }
  }
}
| void dfs_walk | ( | gNode< T > * | s, | 
| func | fp | ||
| ) | 
Definition at line 621 of file graph.hpp.
References NODESTACK, and gNode< T >::status().
{
  NODESTACK q;
  gNode<T> * t;
  
  q.push(s);
  s->status(0);                  // mark as visited
  
  while ( !q.empty() )
  {
    t=q.top();
    q.pop();
    
    if (fp!=NULL) (*fp)(t);       // run operation on node
    //std::cout<< t->data<<std::endl;
    
    while(t->next!=NULL)
    {
      if (t->next->status()==-1)
      {
        t->status(0); // mark as visited 
        q.push(t->next->start); 
      }
      t=t->next;
    }
  }
}
| void edge_list | ( | Seq< T > & | e | ) | const | 
| gNode< T > * get_start_node | ( | ) | 
| bool member | ( | T | val | ) | const  [inline] | 
| Seq< T > neighbors | ( | T | e | ) | 
| T next | ( | T | val | ) | const  [inline] | 
| void print | ( | ) |  [inline] | 
Print rep of graph - for testing.
Definition at line 171 of file graph.hpp.
    {
      std::cout<< "Graph: "<< std::endl;
      gNode<T> *s, *t=head;
      while(t!=NULL)
      {
        std::cout<< t->data<<" ===> ";
        s=t->next;
        while(s!=NULL)
        {   std::cout<< s->data<<", "; s=s->next;}
        std::cout<< std::endl;
        t=t->vlist;
      }
      std::cout<< std::endl;
    }
| void push_edge | ( | T | v_val, | 
| T | e_val | ||
| ) | 
Insert edge.
Definition at line 337 of file graph.hpp.
References head.
Referenced by Graph< Point * >::push_uedge().
{
  if(head==NULL)
    return;
  nedges++;
  
  gNode<T>* t=head;
  
  while(t!=NULL) //find vertex v
  {
     if(t->data==v_val)
     {  
       gNode<T>* temp=new gNode<T>(e_val);
       
       while(t->next!=NULL)
         t=t->next;
       t->next=temp;// add e to v's neighbors
       
       t=head;//update node info
       while(t!=NULL)
       {
         if(t->data==e_val)
         {
           temp->me=t->me;
           t->me=temp;               
           //temp->vlist=t->vlist;
           temp->start=t;
         }
         t=t->vlist;
       }
       
       return;
     }
     t=t->vlist;
  }
}
| void push_uedge | ( | T | v_val, | 
| T | e_val | ||
| ) |  [inline] | 
Definition at line 138 of file graph.hpp.
Referenced by voronoi2d< C, V >::insert_regular().
| gNode< T > * push_vertex | ( | T | val, | 
| int | i = 0 | ||
| ) | 
Insert vertex.
Definition at line 312 of file graph.hpp.
References gNode< T >::aux(), and head.
Referenced by voronoi2d< C, V >::insert_regular().
| bool set_start_node | ( | T & | val | ) | 
| bool set_start_node | ( | T & | v_val, | 
| T & | e_val | ||
| ) | 
Definition at line 577 of file graph.hpp.
References head.
{
  gNode<T>* k=this->head->next;
  
  if (!set_start_node(v_val)) return false;
  
  while(k->next!=NULL)
  {
    if(k->next->data==e_val)
      break;
    k=k->next;
  }
  if (k->next==NULL) return false;
  
  gNode<T> *u= k->next;
  k->next  = u->next;
  u->next  = this->head->next;
  this->head->next= u;
}
| void vertex_list | ( | Seq< T > & | v | ) | const | 
| friend class GraphDfsIter< T >  [friend] |