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 Clase Aleph::Dlink

#include <dlink.H>

+ Diagrama de herencias de Aleph::Dlink
+ Diagrama de colaboración para Aleph::Dlink:

Clases

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

Métodos públicos

Dlinkswap (Dlink &l)
 
 Dlink (const Dlink &)
 Constructor copia reinicia (no copia)
 
 Dlink (Dlink &&l)
 
Dlinkoperator= (const Dlink &l)
 
Dlinkoperator= (Dlink &&l)
 
void reset ()
 Reinicia dlink (equivalente a que se vacíe la lista)
 
void init ()
 inicializa dlink. A usarse cuandos e use malloc
 
void swap (Dlink *link)
 
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
 
void insert (Dlink *node)
 
void push (Dlink *node)
 
void append (Dlink *node)
 
Dlink *& get_next ()
 Retorna enlace después de this.
 
Dlinktop ()
 retorna el primer nodo (como si fuera pila)
 
Dlink *& get_prev ()
 Retorna enlace antes de this.
 
Dlink *& get_first ()
 Retorna el enlace del primer elemento de this.
 
Dlink *& get_last ()
 Retorna el enlace del último elelemto de this.
 
void insert_list (Dlink *head)
 
void append_list (Dlink *head)
 
void concat_list (Dlink *head)
 
void concat_list (Dlink &head)
 
void del ()
 Elimina this de su contexto en una lista.
 
void erase ()
 Elimina this de su contexto en una lista.
 
Dlinkremove_prev ()
 
Dlinkremove_next ()
 Elimina el sucesor de this.
 
Dlinkremove_last ()
 Elimina el último elemento de this.
 
Dlinkremove_first ()
 Elimina el primer elemento de this.
 
Dlinkpop ()
 Elimina el primer elemento de this (como si fuese pila)
 
size_t reverse_list ()
 
size_t split_list (Dlink &l, Dlink &r)
 
Dlink cut_list (Dlink *link)
 Corta la lista this por el enlace link y pasa todos los elementos a la lista vacía list. Más...
 
void remove_all_and_delete ()
 Elimina y libera memoria todos los nodos de this. Más...
 
bool check ()
 

Atributos protegidos

Dlinkprev
 
Dlinknext
 

Descripción detallada

Enlace de nodo de lista circular doblemente enlazada con nodo cabecera.

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

Documentación de las funciones miembro

void Aleph::Dlink::append_list ( Dlink head)
inline

Inserta lista encabezada por head antes del nodo this.

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]headcabecera de la lista que se desea insertar antes del nodo this

Hace referencia a is_empty() y reset().

Referenciado por Aleph::DynDlist< typename GT::Node * >::append_list().

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

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

void Aleph::Dlink::concat_list ( Dlink head)
inline

Concatena lista encabezada por head a lista encabezada por this.

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
headcabecera de la lista que se desea concatenar

Hace referencia a is_empty() y reset().

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

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

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

Dlink Aleph::Dlink::cut_list ( Dlink link)
inline

Corta la lista this por el enlace link y pasa todos los elementos a la lista vacía list.

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]linkpuntero al elemento de la lista this a partir del cual se desea realizar la partición.
Devuelve
list cabecera de lista vacía. Luego de la operación, esta lista contiene los elementos que estaban en this a partir de link

Hace referencia a del() y is_empty().

Referenciado por Aleph::list< T >::splice().

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

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

void Aleph::Dlink::insert ( Dlink node)
inline

Inserta node después de this.

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

Hace referencia a is_empty().

Referenciado por Aleph::Hash_Cache< Key, Data, Cmp >::expand(), Aleph::Hash_Cache< Key, Data, Cmp >::Hash_Cache(), Aleph::Hash_Cache< Key, Data, Cmp >::insert(), Aleph::Tree_Node< T >::insert_right_sibling(), push(), reverse_list() y split_list().

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

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

void Aleph::Dlink::insert_list ( Dlink head)
inline

Inserta lista encabezada por head después del nodo this.

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]headcabecera de la lista que se desea insertar en el nodo this

Hace referencia a is_empty() y reset().

Referenciado por Aleph::list< T >::insert() y Aleph::DynDlist< typename GT::Node * >::insert_list().

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

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

Dlink& Aleph::Dlink::operator= ( const Dlink l)
inline

Asignación reinicia (no copia).

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]lcabecera de lista

Hace referencia a is_empty() y reset().

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

void Aleph::Dlink::push ( Dlink node)
inline

Inserta node como pila.

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

Hace referencia a insert().

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

void Aleph::Dlink::remove_all_and_delete ( )
inline

Elimina y libera memoria todos los nodos de this.

Nota
Los elementos deben haber sido apartados con new

Hace referencia a Aleph::Dlink::Iterator::has_current().

Referenciado por Aleph::list< T >::insert().

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

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

Dlink* Aleph::Dlink::remove_prev ( )
inline

Elimina el anterior a this.

Elimina el nodo anterior de this.

Devuelve
dirección del nodo recién eliminado

Hace referencia a del().

Referenciado por Aleph::Dnode< typename GT::Node * >::remove_last(), remove_last(), Aleph::Dnode< typename GT::Node * >::remove_prev() y split_list().

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

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

size_t Aleph::Dlink::reverse_list ( )
inline

Invierte lista encabezada por this y retorna la cantidad de elementos de la lista.

Devuelve
cantidad de elementos que tiene la lista

Hace referencia a insert(), is_empty() y remove_next().

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

size_t Aleph::Dlink::split_list ( Dlink l,
Dlink r 
)
inline

Particiona lista encabezada por this en dos listas equitativas que son colocadas en l y r respectivamente. 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]llista con los primeros n/2 elementos
[out]rlista con los últimos n/2 elementos
Devuelve
cantidad total de elementos que tenía la lista this antes de la operación.

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

Referenciado por Aleph::DynDlist< typename GT::Node * >::split_list().

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

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

void Aleph::Dlink::swap ( Dlink link)
inline

Intercambia listas encabezadas con this y link en tiempo constante.

Parámetros
[in]linkenlace a cabecera de la otra lista de intercambio

Hace referencia a is_empty() y reset().

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


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

Leandro Rabindranath León