27 #ifndef CDCONTAINERS_INCLUDE_CDCONTAINERS_BINOMIAL_HEAP_H 28 #define CDCONTAINERS_INCLUDE_CDCONTAINERS_BINOMIAL_HEAP_H 257 #ifdef CDC_USE_SHORT_NAMES 261 #define binomial_heap_ctor(...) cdc_binomial_heap_ctor(__VA_ARGS__) 262 #define binomial_heap_ctorl(...) cdc_binomial_heap_ctorl(__VA_ARGS__) 263 #define binomial_heap_ctorv(...) cdc_binomial_heap_ctorv(__VA_ARGS__) 264 #define binomial_heap_dtor(...) cdc_binomial_heap_dtor(__VA_ARGS__) 267 #define binomial_heap_top(...) cdc_binomial_heap_top(__VA_ARGS__) 270 #define binomial_heap_empty(...) cdc_binomial_heap_empty(__VA_ARGS__) 271 #define binomial_heap_size(...) cdc_binomial_heap_size(__VA_ARGS__) 274 #define binomial_heap_extract_top(...) \ 275 cdc_binomial_heap_extract_top(__VA_ARGS__) 276 #define binomial_heap_riinsert(...) cdc_binomial_heap_riinsert(__VA_ARGS__) 277 #define binomial_heap_insert(...) cdc_binomial_heap_insert(__VA_ARGS__) 278 #define binomial_heap_change_key(...) cdc_binomial_heap_change_key(__VA_ARGS__) 279 #define binomial_heap_clear(...) cdc_binomial_heap_clear(__VA_ARGS__) 280 #define binomial_heap_swap(...) cdc_binomial_heap_swap(__VA_ARGS__) 283 #define binomial_heap_merge(...) cdc_binomial_heap_merge(__VA_ARGS__) 285 #define binomial_heap_is_heap(...) cdc_binomial_heap_is_heap(__VA_ARGS__) 288 #define binomial_heap_iter_data(...) cdc_binomial_heap_iter_data(__VA_ARGS__) 289 #define binomial_heap_iter_is_eq(...) cdc_binomial_heap_iter_is_eq(__VA_ARGS__) 292 #endif // CDCONTAINERS_INCLUDE_CDCONTAINERS_BINOMIAL_HEAP_H enum cdc_stat cdc_binomial_heap_extract_top(struct cdc_binomial_heap *h)
Extracts the top item from the binomial heap. This function assumes that the binomial heap isn't empt...
enum cdc_stat cdc_binomial_heap_ctor(struct cdc_binomial_heap **h, struct cdc_data_info *info)
Constructs an empty binomial heap.
enum cdc_stat cdc_binomial_heap_riinsert(struct cdc_binomial_heap *h, void *key, struct cdc_binomial_heap_iter *ret)
Inserts element key to the binomial heap. Write an iterator pointing to a new element in the ret...
void cdc_binomial_heap_clear(struct cdc_binomial_heap *h)
Removes all the elements from the binomial heap.
static void * cdc_binomial_heap_iter_data(struct cdc_binomial_heap_iter *it)
Returns a pointer to the key of current item.
Definition: binomial-heap.h:235
static size_t cdc_binomial_heap_size(struct cdc_binomial_heap *h)
Returns the number of items in the binomial heap.
Definition: binomial-heap.h:131
struct cdc_binomial_heap_node * parent
Definition: binomial-heap.h:44
static bool cdc_binomial_heap_iter_is_eq(struct cdc_binomial_heap_iter *it1, struct cdc_binomial_heap_iter *it2)
Returns false if the iterator it1 equal to the iterator it2, otherwise returns false.
Definition: binomial-heap.h:247
struct cdc_binomial_heap_node * current
Definition: binomial-heap.h:70
struct cdc_binomial_heap * container
Definition: binomial-heap.h:69
struct cdc_binomial_heap_node * child
Definition: binomial-heap.h:45
void cdc_binomial_heap_merge(struct cdc_binomial_heap *h, struct cdc_binomial_heap *other)
Merges two heaps. In the heap h will be the result of the merger, and the heap other will remain empt...
static enum cdc_stat cdc_binomial_heap_insert(struct cdc_binomial_heap *h, void *key)
Inserts element key to the binomial heap.
Definition: binomial-heap.h:180
struct cdc_binomial_heap_node * top
Definition: binomial-heap.h:58
void cdc_binomial_heap_dtor(struct cdc_binomial_heap *h)
Destroys the binomial heap.
enum cdc_stat cdc_binomial_heap_ctorl(struct cdc_binomial_heap **h, struct cdc_data_info *info,...)
Constructs a binomial heap, initialized by an arbitrary number of pointers. The last item must be NUL...
static bool cdc_binomial_heap_empty(struct cdc_binomial_heap *h)
Returns true if the binomial heap has size 0; otherwise returns false.
Definition: binomial-heap.h:143
struct cdc_binomial_heap_node * sibling
Definition: binomial-heap.h:46
struct cdc_binomial_heap_node * root
Definition: binomial-heap.h:57
size_t degree
Definition: binomial-heap.h:47
void * key
Definition: binomial-heap.h:48
cdc_stat
Definition: status.h:24
The cdc_binomial_heap_node struct.
Definition: binomial-heap.h:43
The cdc_binomial_heap_iter struct.
Definition: binomial-heap.h:68
struct cdc_data_info * dinfo
Definition: binomial-heap.h:60
void cdc_binomial_heap_swap(struct cdc_binomial_heap *a, struct cdc_binomial_heap *b)
Swaps binomial heaps a and b. This operation is very fast and never fails.
size_t size
Definition: binomial-heap.h:59
The cdc_data_info struct used to initialize contaners.
Definition: common.h:71
enum cdc_stat cdc_binomial_heap_ctorv(struct cdc_binomial_heap **h, struct cdc_data_info *info, va_list args)
Constructs a binomial heap, initialized by args. The last item must be NULL.
The cdc_binomial_heap struct.
Definition: binomial-heap.h:56
void cdc_binomial_heap_change_key(struct cdc_binomial_heap *h, struct cdc_binomial_heap_iter *pos, void *key)
Changes the item key on the pos position in the binomial heap.
bool cdc_binomial_heap_is_heap(struct cdc_binomial_heap *h)
Checks the heap property.
static void * cdc_binomial_heap_top(struct cdc_binomial_heap *h)
Returns a pointer to the binomial heap's top item. This function assumes that the binomial heap isn't...
Definition: binomial-heap.h:118