21#ifndef BRANCHANDBOUND1TREE_FIBONACCI_HEAP_H
22#define BRANCHANDBOUND1TREE_FIBONACCI_HEAP_H
void insert_node(FibonacciHeap *heap, OrdTreeNode *node)
Insert a Node in the Fibonacci Heap.
void create_insert_node(FibonacciHeap *heap, OrdTreeNode *node, unsigned short key, double value)
A wrapper function to create a Node and insert it in the Fibonacci Heap.
int extract_min(FibonacciHeap *heap)
Extract the minimum Node from the Fibonacci Heap.
void create_fibonacci_heap(FibonacciHeap *heap)
Create an empty Fibonacci Heap.
void create_node(OrdTreeNode *node, unsigned short key, double value)
Create a Node with a given key and value.
void decrease_value(FibonacciHeap *heap, OrdTreeNode *node, double new_value)
Decrease the value of a Node in the Fibonacci Heap.
The Fibonacci Heap datastructure as collection of Heap-ordered Trees.
OrdTreeNode * min_root
The root of the Heap-ordered Tree with the minimum value.
OrdTreeNode * tail_tree_list
The root of the tail Tree in the Fibonacci Heap.
unsigned short num_trees
The number of Trees in the Heap.
OrdTreeNode * head_tree_list
The root of the head Tree in the Fibonacci Heap.
unsigned short num_nodes
The number of Nodes in the Heap.
A Heap-ordered Tree Node where the key of the parent is <= the key of its children.
struct OrdTreeNode * right_sibling
The right sibling of the Node.
bool marked
True if the Node has lost a child, false otherwise.
unsigned short num_children
The number of children of the Node.
struct OrdTreeNode * head_child_list
The head of the list of children of the Node.
struct OrdTreeNode * left_sibling
The left sibling of the Node.
unsigned short key
The key of the Node.
bool is_root
True if the Node is a root, false otherwise.
struct OrdTreeNode * parent
The parent of the Node.
double value
The value of the Node.
struct OrdTreeNode * tail_child_list
The tail of the list of children of the Node.