RNAlib-2.6.3
 
Loading...
Searching...
No Matches
heap.h File Reference

Implementation of an abstract heap data structure. More...

Go to the source code of this file.

Typedefs

typedef struct vrna_heap_s * vrna_heap_t
 An abstract heap data structure.
 
typedef int(* vrna_heap_cmp_f) (const void *a, const void *b, void *data)
 Heap compare function prototype.
 
typedef size_t(* vrna_heap_get_pos_f) (const void *a, void *data)
 Retrieve the position of a particular heap entry within the heap.
 
typedef void(* vrna_heap_set_pos_f) (const void *a, size_t pos, void *data)
 Store the position of a particular heap entry within the heap.
 

Functions

vrna_heap_t vrna_heap_init (size_t n, vrna_heap_cmp_f cmp, vrna_heap_get_pos_f get_entry_pos, vrna_heap_set_pos_f set_entry_pos, void *data)
 Initialize a heap data structure.
 
void vrna_heap_free (vrna_heap_t h)
 Free memory occupied by a heap data structure.
 
size_t vrna_heap_size (struct vrna_heap_s *h)
 Get the size of a heap data structure, i.e. the number of stored elements.
 
void vrna_heap_insert (vrna_heap_t h, void *v)
 Insert an element into the heap.
 
void * vrna_heap_pop (vrna_heap_t h)
 Pop (remove and return) the object at the root of the heap.
 
const void * vrna_heap_top (vrna_heap_t h)
 Get the object at the root of the heap.
 
void * vrna_heap_remove (vrna_heap_t h, const void *v)
 Remove an arbitrary element within the heap.
 
void * vrna_heap_update (vrna_heap_t h, void *v)
 Update an arbitrary element within the heap.
 

Detailed Description

Implementation of an abstract heap data structure.