Referencia de la Clase Dlink
[Secuencias.]

Enlace de nodo de lista circular doblemente enlazada con nodo cabecera. Más...

Diagrama de herencias de Dlink

Inheritance graph
[leyenda]
Diagrama de colaboración para Dlink:

Collaboration graph
[leyenda]

Lista de todos los miembros.

Métodos públicos

void append (Dlink *node)
 Inserta node antes de this.
void append_list (Dlink *head)
 Inserta lista encabezada por head antes del nodo this.
void concat_list (Dlink *head)
 Concatena lista encabezada por head a lista encabezada por this.
void cut_list (Dlink *link, Dlink *list)
 Corta la lista this por el enlace link y pasa todos los elementos a la lista vacía list.
void del ()
 Elimina this de su contexto en una lista.
 Dlink (const Dlink &)
 Constructor copia reinicia (no copia).
Dlink *& get_next ()
 Retorna enlace después de this.
Dlink *& get_prev ()
 Retorna enlace antes de this.
void insert (Dlink *node)
 Inserta node después de this.
void insert_list (Dlink *head)
 Inserta lista encabezada por head después del nodo this.
bool is_empty () const
 retorna true si this está vacía
bool is_unitarian () const
 retorna true si this tiene exactamente un elemento
bool is_unitarian_or_empty () const
 retorna true si this tiene uno o ningún elemento
Dlinkoperator= (const Dlink &l)
 Asignación reinicia (no copia).
void remove_all_and_delete ()
 Elimina y libera memoria todos los nodos de this.
Dlinkremove_next ()
 Elimina el sucesor de this.
Dlinkremove_prev ()
 Elimina el anterior a this.
void reset ()
 Reinicia dlink (equivalente a que se vacíe la lista).
int reverse_list ()
 Invierte lista encabezada por this y retorna la cantidad de elementos de la lista.
size_t split_list (Dlink &l, Dlink &r)
 Particiona lista encabezada por this en dos listas equitativas que son colocadas en l y r respectivamente.
void swap (Dlink *link)
 Intercambia listas encabezadas con this y link en tiempo constante.

Clases

class  Iterator
 Iterador sobre enlaces. Más...


Descripción detallada

La clase Dlink implanta todo el manejo de enlaces que sea posible para manejar nodos pertenecientes a listas doblemente enlazadas, circulares, con nodo cabecera.

Debe prestarse mucha atención al hecho de que Dlink no define un nodo, sino el doble enlace.

Ver también:
Macros_Dlink Dlink::Iterator Dnode Dlist DynDlist

Definición en la línea 66 del archivo dlink.H.


Documentación de las funciones miembro

void append ( Dlink node  )  [inline]

Parámetros:
[in] node puntero a nodo; el nodo no debe formar de una lista

Definición en la línea 171 del archivo dlink.H.

Hace referencia a Dlink::is_empty(), Dlink::next, y Dlink::prev.

Referenciado por Aleph::dlink_random_search(), Aleph::dlink_random_select(), List_Graph::insert_arc(), Tree_Node::insert_left_sibling(), List_Graph::insert_node(), Aleph::merge_lists(), Aleph::quicksort(), Aleph::selection_sort(), y Dlink::split_list().

void append_list ( Dlink head  )  [inline]

La función asume que this es un nodo que conforma una lista y que antes de él se desea insertar enteramente la lista cuyo nodo cabecera es head

Parámetros:
[in] head cabecera de la lista que se desea insertar antes del nodo this

Definición en la línea 230 del archivo dlink.H.

Hace referencia a Dlink::is_empty(), Dlink::next, Dlink::prev, y Dlink::reset().

Referenciado por DynDlist< Aleph::Path::Path_Desc >::append_list().

void concat_list ( Dlink head  )  [inline]

El método asume que this es una cabecera de una lista y le concatena enteramente la lista cuya cabecera es head.

Después de la operación head deviene vacío.

Parámetros:
head cabecera de la lista que se desea concatenar

Definición en la línea 250 del archivo dlink.H.

Hace referencia a Dlink::is_empty(), Dlink::next, Dlink::prev, Dlink::reset(), y Dlink::swap().

Referenciado por Aleph::dlink_random_search(), Aleph::dlink_random_select(), Aleph::merge_lists(), y Aleph::quicksort().

void cut_list ( Dlink link,
Dlink list 
) [inline]

Particiona la lista cuyo nodo cabecera es this, a partir de uno de sus nodos apuntados por link y coloca todos los elementos desde link hasta el final de la lista en la lista vacía list.

Parámetros:
[in] link puntero al elemento de la lista this a partir del cual se desea realizar la partición.
[out] list cabecera de lista vacía. Luego de la operación, esta lista contiene los elementos que estaban en this a partir de link

Definición en la línea 389 del archivo dlink.H.

Hace referencia a Dlink::is_empty(), Dlink::next, y Dlink::prev.

Referenciado por list::splice().

void insert ( Dlink node  )  [inline]

Parámetros:
[in] node nodo aislado que debe apuntar a sí mismo sin estar enlado a otros elementos

Definición en la línea 155 del archivo dlink.H.

Hace referencia a Dlink::is_empty(), Dlink::next, y Dlink::prev.

Referenciado por Tree_Node::insert_right_sibling(), Dlink::reverse_list(), y Dlink::split_list().

void insert_list ( Dlink head  )  [inline]

La función asume que this es un nodo que conforma una lista y que a partir de él se desea insertar enteramente la lista cuyo nodo cabecera es head

Parámetros:
[in] head cabecera de la lista que se desea insertar en el nodo this

Definición en la línea 209 del archivo dlink.H.

Hace referencia a Dlink::is_empty(), Dlink::next, Dlink::prev, y Dlink::reset().

Referenciado por DynDlist< Aleph::Path::Path_Desc >::insert_list().

Dlink& operator= ( const Dlink l  )  [inline]

Operador de asignación sólo con propósitos de compatibilidad. En realidad no ocurre la copia. Sólo this se reinicia para que apunte a sí mismo.

Parámetros:
[in] l cabecera de lista

Definición en la línea 86 del archivo dlink.H.

Hace referencia a Dlink::is_empty(), y Dlink::reset().

void remove_all_and_delete (  )  [inline]

Nota:
Los elementos deben haber sido apartados con new

Definición en la línea 658 del archivo dlink.H.

Hace referencia a Dlink::del(), Dlink::Iterator::get_current(), Dlink::Iterator::has_current(), y Dlink::Iterator::next().

Referenciado por GenLinearHashTable< Key, LhashBucket, Aleph::equal_to< Key > >::empty().

Dlink* remove_prev (  )  [inline]

Elimina el nodo anterior de this.

Devuelve:
dirección del nodo recién eliminado

Reimplementado en Dnode, Dnode< Aleph::Path::Path_Desc >, y Dnode< Aleph::pair< T, Elem > >.

Definición en la línea 287 del archivo dlink.H.

Hace referencia a Dlink::del().

Referenciado por Dnode< Aleph::pair< T, Elem > >::remove_prev(), y Dlink::split_list().

int reverse_list (  )  [inline]

Devuelve:
cantidad de elementos que tiene la lista

Definición en la línea 317 del archivo dlink.H.

Hace referencia a Dlink::insert(), Dlink::is_empty(), Dlink::remove_next(), y Dlink::swap().

size_t split_list ( Dlink l,
Dlink r 
) [inline]

Retorna la cantidad de elementos que tenía this antes de la partición.

El método toma la lista cuyo nodo cabecera es this y la particiona equitativamente por el centro.

Después de la operación la this deviene vacío.

Parámetros:
[out] l lista con los primeros n/2 elementos
[out] r lista con los últimos n/2 elementos
Devuelve:
cantidad total de elementos que tenía la lista this antes de la operación.

Definición en la línea 356 del archivo dlink.H.

Hace referencia a Dlink::append(), Dlink::insert(), Dlink::is_empty(), Dlink::remove_next(), y Dlink::remove_prev().

Referenciado por Aleph::mergesort(), y DynDlist< Aleph::Path::Path_Desc >::split_list().

void swap ( Dlink link  )  [inline]

Parámetros:
[in] link enlace a cabecera de la otra lista de intercambio

Definición en la línea 110 del archivo dlink.H.

Hace referencia a Dlink::is_empty(), Dlink::next, Dlink::prev, y Dlink::reset().

Referenciado por Dlink::concat_list(), Aleph::dlink_random_search(), Aleph::insertion_sort(), Dlink::reverse_list(), Aleph::selection_sort(), y DynDlist< Aleph::Path::Path_Desc >::swap().


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

Leandro R. León