31 lines
823 B
C
31 lines
823 B
C
#ifndef VIETER_HEAP_TREE
|
|
#define VIETER_HEAP_TREE
|
|
|
|
#include <stdint.h>
|
|
#include <stdlib.h>
|
|
|
|
typedef struct vieter_heap_node {
|
|
uint64_t key;
|
|
void *data;
|
|
struct vieter_heap_node *largest_order;
|
|
struct vieter_heap_node *next_largest_order;
|
|
} vieter_heap_node;
|
|
|
|
vieter_heap_node *vieter_heap_node_init();
|
|
|
|
void vieter_heap_node_free(vieter_heap_node *node);
|
|
|
|
vieter_heap_node *vieter_heap_tree_merge_same_order(vieter_heap_node *root_a, vieter_heap_node *root_b);
|
|
|
|
typedef struct vieter_heap_tree {
|
|
uint64_t order;
|
|
vieter_heap_node *root;
|
|
struct vieter_heap_tree *next;
|
|
} vieter_heap_tree;
|
|
|
|
vieter_heap_tree *vieter_heap_tree_init(vieter_heap_node *root, vieter_heap_tree *next, uint64_t order);
|
|
|
|
vieter_heap_tree *vieter_heap_tree_merge(vieter_heap_tree *tree_a, vieter_heap_tree *tree_b);
|
|
|
|
#endif
|