27 #ifndef CDCONTAINERS_INCLUDE_CDCONTAINERS_PAIRING_HEAP_H 28 #define CDCONTAINERS_INCLUDE_CDCONTAINERS_PAIRING_HEAP_H 253 #ifdef CDC_USE_SHORT_NAMES 257 #define pairing_heap_ctor(...) cdc_pairing_heap_ctor(__VA_ARGS__) 258 #define pairing_heap_ctorl(...) cdc_pairing_heap_ctorl(__VA_ARGS__) 259 #define pairing_heap_ctorv(...) cdc_pairing_heap_ctorv(__VA_ARGS__) 260 #define pairing_heap_dtor(...) cdc_pairing_heap_dtor(__VA_ARGS__) 263 #define pairing_heap_top(...) cdc_pairing_heap_top(__VA_ARGS__) 266 #define pairing_heap_empty(...) cdc_pairing_heap_empty(__VA_ARGS__) 267 #define pairing_heap_size(...) cdc_pairing_heap_size(__VA_ARGS__) 270 #define pairing_heap_extract_top(...) cdc_pairing_heap_extract_top(__VA_ARGS__) 271 #define pairing_heap_riinsert(...) cdc_pairing_heap_riinsert(__VA_ARGS__) 272 #define pairing_heap_insert(...) cdc_pairing_heap_insert(__VA_ARGS__) 273 #define pairing_heap_change_key(...) cdc_pairing_heap_change_key(__VA_ARGS__) 274 #define pairing_heap_clear(...) cdc_pairing_heap_clear(__VA_ARGS__) 275 #define pairing_heap_swap(...) cdc_pairing_heap_swap(__VA_ARGS__) 278 #define pairing_heap_merge(...) cdc_pairing_heap_merge(__VA_ARGS__) 280 #define pairing_heap_is_heap(...) cdc_pairing_heap_is_heap(__VA_ARGS__) 283 #define pairing_heap_iter_data(...) cdc_pairing_heap_iter_data(__VA_ARGS__) 284 #define pairing_heap_iter_is_eq(...) cdc_pairing_heap_iter_is_eq(__VA_ARGS__) 287 #endif // CDCONTAINERS_INCLUDE_CDCONTAINERS_PAIRING_HEAP_H enum cdc_stat cdc_pairing_heap_ctorl(struct cdc_pairing_heap **h, struct cdc_data_info *info,...)
Constructs a pairing heap, initialized by an arbitrary number of pointers. The last item must be NULL...
bool cdc_pairing_heap_is_heap(struct cdc_pairing_heap *h)
Checks the heap property.
The cdc_pairing_heap_iter struct.
Definition: pairing-heap.h:66
enum cdc_stat cdc_pairing_heap_ctor(struct cdc_pairing_heap **h, struct cdc_data_info *info)
Constructs an empty pairing heap.
void cdc_pairing_heap_clear(struct cdc_pairing_heap *h)
Removes all the elements from the pairing heap.
static bool cdc_pairing_heap_iter_is_eq(struct cdc_pairing_heap_iter *it1, struct cdc_pairing_heap_iter *it2)
Returns false if the iterator it1 equal to the iterator it2, otherwise returns false.
Definition: pairing-heap.h:243
static size_t cdc_pairing_heap_size(struct cdc_pairing_heap *h)
Returns the number of items in the pairing heap.
Definition: pairing-heap.h:129
void cdc_pairing_heap_merge(struct cdc_pairing_heap *h, struct cdc_pairing_heap *other)
Merges two heaps. In the heap h will be the result of the merger, and the heap other will remain empt...
struct cdc_pairing_heap_node * current
Definition: pairing-heap.h:68
The cdc_pairing_heap_node struct.
Definition: pairing-heap.h:43
enum cdc_stat cdc_pairing_heap_extract_top(struct cdc_pairing_heap *h)
Extracts the top item from the pairing heap. This function assumes that the pairing heap isn't empty...
enum cdc_stat cdc_pairing_heap_ctorv(struct cdc_pairing_heap **h, struct cdc_data_info *info, va_list args)
Constructs a pairing heap, initialized by args. The last item must be NULL.
size_t size
Definition: pairing-heap.h:57
static bool cdc_pairing_heap_empty(struct cdc_pairing_heap *h)
Returns true if the pairing heap has size 0; otherwise returns false.
Definition: pairing-heap.h:141
void cdc_pairing_heap_swap(struct cdc_pairing_heap *a, struct cdc_pairing_heap *b)
Swaps pairing heaps a and b. This operation is very fast and never fails.
enum cdc_stat cdc_pairing_heap_riinsert(struct cdc_pairing_heap *h, void *key, struct cdc_pairing_heap_iter *ret)
Inserts element key to the pairing heap. Write an iterator pointing to a new element in the ret...
struct cdc_pairing_heap_node * root
Definition: pairing-heap.h:56
struct cdc_data_info * dinfo
Definition: pairing-heap.h:58
static void * cdc_pairing_heap_iter_data(struct cdc_pairing_heap_iter *it)
Returns a pointer to the key of current item.
Definition: pairing-heap.h:232
The cdc_pairing_heap struct.
Definition: pairing-heap.h:55
cdc_stat
Definition: status.h:24
static enum cdc_stat cdc_pairing_heap_insert(struct cdc_pairing_heap *h, void *key)
Inserts element key to the pairing heap.
Definition: pairing-heap.h:178
struct cdc_pairing_heap_node * child
Definition: pairing-heap.h:45
struct cdc_pairing_heap * container
Definition: pairing-heap.h:67
void cdc_pairing_heap_change_key(struct cdc_pairing_heap *h, struct cdc_pairing_heap_iter *pos, void *key)
Changes the item key on the pos position in the pairing heap.
struct cdc_pairing_heap_node * sibling
Definition: pairing-heap.h:46
static void * cdc_pairing_heap_top(struct cdc_pairing_heap *h)
Returns a pointer to the pairing heap's top item. This function assumes that the pairing heap isn't e...
Definition: pairing-heap.h:116
struct cdc_pairing_heap_node * parent
Definition: pairing-heap.h:44
void * key
Definition: pairing-heap.h:47
void cdc_pairing_heap_dtor(struct cdc_pairing_heap *h)
Destroys the pairing heap.
The cdc_data_info struct used to initialize contaners.
Definition: common.h:71