#include <tpl_sgraph.H>
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_SGraph & | operator= (const List_SGraph &g) |
List_SGraph & | operator= (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 | |
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:
Estas clases deben haberse definido previamente.
Una vez instanciado un List_SGraph<Node, Arc>, los nodos y arcos deben accederse mediante los tipos internos:
__Graph_Node | El 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_Arc | El 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 |
|
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.
[in] | node | puntero a un nodo ya creado que no pertenece a ningún grafo. |
delete
, node
debe haber sido imperativamente apartado con new
.
|
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.
[in] | arc | puntero al arco a eliminar. |
Hace referencia a Aleph::DynSetTree< Key, Tree, Compare >::remove().
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).
[in] | src | puntero al nodo origen. |
[in] | tgt | puntero al nodo destino. |
[in] | arc_info | valor de información a ser copiado en el arco. |
bad_alloc | si no hay memoria para el arco. |