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::GenBinHeap< NodeType, Key, Compare >

#include <tpl_binHeap.H>

Tipos públicos

typedef NodeType< Key > Node
 

Métodos públicos

Compare & key_comp ()
 
Compare & get_compare ()
 
void swap (GenBinHeap &h)
 
Node * getRoot ()
 
Node * getRoot () const
 
template<class Op >
void for_each_in_preorder (Node *p, Op &op)
 
template<class Op >
void for_each_in_preorder (Node *p, Op &&op())
 
template<class Op >
bool level_traverse (Node *root, Op &operation)
 
template<class Op >
bool level_traverse (Node *root, Op &&operation=Op())
 
template<class Op >
bool level_traverse (Node *root, Op &operation) const
 
template<class Op >
bool level_traverse (Node *root, Op &&operation=Op()) const
 
 GenBinHeap (Compare &__cmp)
 
 GenBinHeap (Compare &&__cmp=Compare())
 
Node * insert (Node *p)
 
Node * getMin () throw (std::exception, std::underflow_error)
 
Node * getMax () throw (std::exception, std::underflow_error)
 
void update (Node *p)
 
Node * remove (Node *node) throw (std::exception, std::underflow_error)
 
void remove_all_and_delete ()
 
Node * top () const throw (std::exception, std::underflow_error)
 
const size_t & size () const
 Retorna la cardinalidad del heap.
 
bool is_empty () const
 Retorna true si el heap está vacío.
 
bool verify_heap ()
 

Métodos protegidos

Node * advance_left (Node *p)
 
Node * advance_right (Node *p)
 
virtual bool verify_heap (Node *p)
 

Descripción detallada

template<template< class > class NodeType, typename Key, class Compare = Aleph::less<Key>>
class Aleph::GenBinHeap< NodeType, Key, Compare >

Heap genérico de nodos.

La clase GenBinHeap instrumenta un heap de nodos. Este heap no está implementado mediante un arreglo, sino con un árbol binario. Esto proporciona la gran ventaja de ser altamente dinámico. La memoria empleada es pues proporcional a la cantidad de nodos del heap.

Esta clase no está destinada a uso público. Su fin es proveer la funcionalidad básica a las clases BinHeap, BinHeapVtl y DynBinHeap.

Parámetros
NodeTypeel tipo de nodo que usa el heap; éste será con o sin destructor virtual.
Keyla clave que guarda cada nodo.
Compareel criterio de comparación entre las claves de los nodos.
Ver también
BinHeap BinHeapVtl DynBinHeap

Documentación de las funciones miembro

template<template< class > class NodeType, typename Key, class Compare = Aleph::less<Key>>
Node* Aleph::GenBinHeap< NodeType, Key, Compare >::getMax ( )
throw (std::exception,
std::underflow_error
)
inline

Esta es una función miembro sobrecargada que se suministra por conveniencia. Difiere de la anterior función solamente en los argumentos que acepta.

template<template< class > class NodeType, typename Key, class Compare = Aleph::less<Key>>
Node* Aleph::GenBinHeap< NodeType, Key, Compare >::getMin ( )
throw (std::exception,
std::underflow_error
)
inline

Elimina del heap el nodo de menor prioridad.

getMIn() extrae del heap this el nodo que contenga el menor valor de prioridad según el criterio de comparación definido en la declaración.

Devuelve
puntero al nodo eliminado.
Excepciones
underflow_errorsi el heap está vacío.

Referenciado por Aleph::Huffman_Encoder_Engine::generate_huffman_tree(), Aleph::GenBinHeap< BinHeapNodeVtl, Key, Compare >::getMax(), Aleph::GenBinHeap< BinHeapNodeVtl, Key, Compare >::remove() y Aleph::GenBinHeap< BinHeapNodeVtl, Key, Compare >::remove_all_and_delete().

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

template<template< class > class NodeType, typename Key, class Compare = Aleph::less<Key>>
Node* Aleph::GenBinHeap< NodeType, Key, Compare >::insert ( Node *  p)
inline

Inserta un nodo en un heap.

insert(p) inserta en el heap this el nodo p.

Parámetros
[in]pel nodo a insertar.
Devuelve
puntero al nodo insertado.

Referenciado por Aleph::Huffman_Encoder_Engine::generate_huffman_tree(), Aleph::GenBinHeap< BinHeapNodeVtl, Key, Compare >::remove(), Aleph::Huffman_Encoder_Engine::set_end_of_stream() y Aleph::Huffman_Encoder_Engine::set_freq().

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

template<template< class > class NodeType, typename Key, class Compare = Aleph::less<Key>>
Node* Aleph::GenBinHeap< NodeType, Key, Compare >::remove ( Node *  node)
throw (std::exception,
std::underflow_error
)
inline

Elimina del heap el nodo node.

remove(node) elimina del heap el nodo node.

Parámetros
[in]nodepuntero al nodo a eliminar.
Excepciones
underflow_errorsi el heap está vacío
Devuelve
puntero al nodo eliminado
Nota
No se verifica si node pertenece al heap.
template<template< class > class NodeType, typename Key, class Compare = Aleph::less<Key>>
void Aleph::GenBinHeap< NodeType, Key, Compare >::remove_all_and_delete ( )
inline

Borra todos los nodos del heap, invoca a los destructores de los nodos eliminados y libera toda la memoria

template<template< class > class NodeType, typename Key, class Compare = Aleph::less<Key>>
Node* Aleph::GenBinHeap< NodeType, Key, Compare >::top ( ) const
throw (std::exception,
std::underflow_error
)
inline

Retorna el nodo con menor prioridad según el criterio de comparación especificado en la declaración.

template<template< class > class NodeType, typename Key, class Compare = Aleph::less<Key>>
void Aleph::GenBinHeap< NodeType, Key, Compare >::update ( Node *  p)
inline

Actualiza prioridad de un nodo contenido en el heap.

update(p) toma un nodo del heap cuya prioridad haya sido modificada y actualiza su prioridad dentro del heap. La idea es que si por alguna razón una prioridad debe ser modificada, entonces el orden de extracción pueda actualizarse.

Parámetros
[in]ppuntero al nodo que se desea actualizar
Ver también
insert()

Referenciado por Aleph::GenBinHeap< BinHeapNodeVtl, Key, Compare >::remove().

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


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

Leandro Rabindranath León