Aleph-w  1.5a.2
Biblioteca general de algoritmos y estructuras de datos
 Todo Clases Archivos Funciones Variables 'typedefs' Enumeraciones Amigas Grupos Páginas
Referencia de la plantilla de la Clase Aleph::List_SGraph< __Graph_Node, __Graph_Arc >

#include <tpl_sgraph.H>

+ Diagrama de herencias de Aleph::List_SGraph< __Graph_Node, __Graph_Arc >

Clases

class  Arc_Iterator
 
class  Node_Arc_Iterator
 
class  Node_Iterator
 

Métodos públicos

virtual Node * insert_node (Node *p)
 
virtual void remove_arc (Arc *arc)
 
virtual void remove_node (Node *p)
 
Node * get_first_node () const
 
Arc * get_first_arc () const
 
Arc * get_first_arc (Node *p) const
 
template<class GT >
 List_SGraph (GT &g)
 
void swap (List_SGraph &g)
 
 List_SGraph (List_SGraph &&g)
 
List_SGraphoperator= (const List_SGraph &g)
 
List_SGraphoperator= (List_SGraph &&g)
 
template<class Compare >
void sort_arcs (Compare &cmp)
 
template<class Compare >
void sort_arcs (Compare &&cmp=Compare())
 
 GRAPH_FUNCTIONAL_METHODS (List_SGraph)
 

Atributos públicos

 GRAPH_ITERATIVE_METHODS
 
 GRAPH_SEARCH_METHODS
 
 GRAPH_INSERTION_METHODS
 

Descripción detallada

template<typename __Graph_Node = Graph_Snode<int>, typename __Graph_Arc = Graph_Sarc<int>>
class Aleph::List_SGraph< __Graph_Node, __Graph_Arc >

Clase grafo implementado con listas de adyacencia.

List_SGraph<Node, Arc> es una clase que modeliza grafos representados mediante listas de adyacencia.

La clase maneja dos parámetros tipo fundamentales:

  • __Graph_Node: el tipo de los nodos que debe estar definido mediante la clase Graph_Snode.
  • __Graph_Arc: el tipo de los nodos que debe estar definido mediante la clase Graph_Sarc.

Estas clases deben haberse definido previamente.

Una vez instanciado un List_SGraph<Node, Arc>, los nodos y arcos deben accederse mediante los tipos internos:

  • List_SGraph<Node, Arc>::Node
  • List_SGraph<Node, Arc>::Arc
Parámetros
__Graph_NodeEl tipo de nodo. Debe estar definido a partir de la clase __Graph_Node, bien sea por inclusión de atributos, por derivación o por combinación de ambos
__Graph_ArcEl tipo de arco. Debe estar definido a partir de la clase __Graph_Arc, bien sea por inclusión de atributos, por derivación o por combinación de ambos
Ver también
Graph_SNode Graph_SArc
List_SDigraph Path

Documentación de las funciones miembro

template<typename __Graph_Node = Graph_Snode<int>, typename __Graph_Arc = Graph_Sarc<int>>
virtual Node* Aleph::List_SGraph< __Graph_Node, __Graph_Arc >::insert_node ( Node *  p)
inlinevirtual

Inserción de un nodo cuya memoria ya ha sido apartada.

Este método asume un nodo de tipo List_Graph::Node apuntado por el parámetro node y lo inserta en el grafo.

Parámetros
[in]nodepuntero a un nodo ya creado que no pertenece a ningún grafo.
Devuelve
Puntero al nodo insertado.
Nota
Puesto que cuando se elimine el nodo o se destruya el grafo se invocará al operador delete, node debe haber sido imperativamente apartado con new.
Por lo general, esta rutina no debe usarse. En su lugar debe utilizarse la otra inserción (que aparta memoria automáticamente.
template<typename __Graph_Node = Graph_Snode<int>, typename __Graph_Arc = Graph_Sarc<int>>
virtual void Aleph::List_SGraph< __Graph_Node, __Graph_Arc >::remove_arc ( Arc *  arc)
inlinevirtual

Elimina el arco arc.

La operación elimina del grafo el arco arc y luego libera su memoria.

El arco debe pertenecer al grafo y no se realiza ninguna verificación al respecto.

Parámetros
[in]arcpuntero al arco a eliminar.

Hace referencia a Aleph::DynSetTree< Key, Tree, Compare >::remove().

+ Gráfico de llamadas para esta función:

Documentación de los datos miembro

template<typename __Graph_Node = Graph_Snode<int>, typename __Graph_Arc = Graph_Sarc<int>>
Aleph::List_SGraph< __Graph_Node, __Graph_Arc >::GRAPH_INSERTION_METHODS

Crea un nuevo arco entre dos nodos.

Este método aparta memoria para un nuevo arco entre los nodos previamente definidos, src_node y tgt_node con valor de contenido en el arco arc_info.

Los nodos deben haber sido previamente insertados en el grafo. A este respecto, no se hace ninguna verificación. El operador de asignación de la clase Arc::Arc_Type debe haber sido definido.

No se realiza ninguna verificación de existencia previa de un arco entre los nodos involucrados (esto es necesario para operar con multigrafos).

Parámetros
[in]srcpuntero al nodo origen.
[in]tgtpuntero al nodo destino.
[in]arc_infovalor de información a ser copiado en el arco.
Devuelve
puntero al arco insertado
Excepciones
bad_allocsi no hay memoria para el arco.

La documentación para esta clase fue generada a partir del siguiente fichero:

Leandro Rabindranath León