Lines Matching refs:heap

76 fibheap_compare (fibheap_t heap ATTRIBUTE_UNUSED, fibnode_t a, fibnode_t b)  in fibheap_compare()
86 fibheap_comp_data (fibheap_t heap, fibheapkey_t key, void *data, fibnode_t b) in fibheap_comp_data() argument
93 return fibheap_compare (heap, &a, b); in fibheap_comp_data()
98 fibheap_insert (fibheap_t heap, fibheapkey_t key, void *data) in fibheap_insert() argument
110 fibheap_ins_root (heap, node); in fibheap_insert()
114 if (heap->min == NULL || node->key < heap->min->key) in fibheap_insert()
115 heap->min = node; in fibheap_insert()
117 heap->nodes++; in fibheap_insert()
124 fibheap_min (fibheap_t heap) in fibheap_min() argument
127 if (heap->min == NULL) in fibheap_min()
129 return heap->min->data; in fibheap_min()
134 fibheap_min_key (fibheap_t heap) in fibheap_min_key() argument
137 if (heap->min == NULL) in fibheap_min_key()
139 return heap->min->key; in fibheap_min_key()
178 fibheap_extract_min (fibheap_t heap) in fibheap_extract_min() argument
184 if (heap->min != NULL) in fibheap_extract_min()
188 z = fibheap_extr_min_node (heap); in fibheap_extract_min()
198 fibheap_replace_key_data (fibheap_t heap, fibnode_t node, in fibheap_replace_key_data() argument
208 if (fibheap_comp_data (heap, key, data, node) > 0) in fibheap_replace_key_data()
226 if (y != NULL && fibheap_compare (heap, node, y) <= 0) in fibheap_replace_key_data()
228 fibheap_cut (heap, node, y); in fibheap_replace_key_data()
229 fibheap_cascading_cut (heap, y); in fibheap_replace_key_data()
232 if (fibheap_compare (heap, node, heap->min) <= 0) in fibheap_replace_key_data()
233 heap->min = node; in fibheap_replace_key_data()
240 fibheap_replace_data (fibheap_t heap, fibnode_t node, void *data) in fibheap_replace_data() argument
242 return fibheap_replace_key_data (heap, node, node->key, data); in fibheap_replace_data()
247 fibheap_replace_key (fibheap_t heap, fibnode_t node, fibheapkey_t key) in fibheap_replace_key() argument
250 fibheap_replace_key_data (heap, node, key, node->data); in fibheap_replace_key()
256 fibheap_delete_node (fibheap_t heap, fibnode_t node) in fibheap_delete_node() argument
261 fibheap_replace_key (heap, node, FIBHEAPKEY_MIN); in fibheap_delete_node()
262 if (node != heap->min) in fibheap_delete_node()
267 fibheap_extract_min (heap); in fibheap_delete_node()
274 fibheap_delete (fibheap_t heap) in fibheap_delete() argument
276 while (heap->min != NULL) in fibheap_delete()
277 free (fibheap_extr_min_node (heap)); in fibheap_delete()
279 free (heap); in fibheap_delete()
284 fibheap_empty (fibheap_t heap) in fibheap_empty() argument
286 return heap->nodes == 0; in fibheap_empty()
291 fibheap_extr_min_node (fibheap_t heap) in fibheap_extr_min_node() argument
293 fibnode_t ret = heap->min; in fibheap_extr_min_node()
304 fibheap_ins_root (heap, x); in fibheap_extr_min_node()
308 fibheap_rem_root (heap, ret); in fibheap_extr_min_node()
309 heap->nodes--; in fibheap_extr_min_node()
312 if (heap->nodes == 0) in fibheap_extr_min_node()
313 heap->min = NULL; in fibheap_extr_min_node()
318 heap->min = ret->right; in fibheap_extr_min_node()
319 fibheap_consolidate (heap); in fibheap_extr_min_node()
327 fibheap_ins_root (fibheap_t heap, fibnode_t node) in fibheap_ins_root() argument
331 if (heap->root == NULL) in fibheap_ins_root()
333 heap->root = node; in fibheap_ins_root()
341 fibnode_insert_after (heap->root, node); in fibheap_ins_root()
346 fibheap_rem_root (fibheap_t heap, fibnode_t node) in fibheap_rem_root() argument
349 heap->root = NULL; in fibheap_rem_root()
351 heap->root = fibnode_remove (node); in fibheap_rem_root()
356 fibheap_consolidate (fibheap_t heap) in fibheap_consolidate() argument
370 while ((w = heap->root) != NULL) in fibheap_consolidate()
373 fibheap_rem_root (heap, w); in fibheap_consolidate()
378 if (fibheap_compare (heap, x, y) > 0) in fibheap_consolidate()
385 fibheap_link (heap, y, x); in fibheap_consolidate()
391 heap->min = NULL; in fibheap_consolidate()
395 fibheap_ins_root (heap, a[i]); in fibheap_consolidate()
396 if (heap->min == NULL || fibheap_compare (heap, a[i], heap->min) < 0) in fibheap_consolidate()
397 heap->min = a[i]; in fibheap_consolidate()
403 fibheap_link (fibheap_t heap ATTRIBUTE_UNUSED, in fibheap_link()
417 fibheap_cut (fibheap_t heap, fibnode_t node, fibnode_t parent) in fibheap_cut() argument
421 fibheap_ins_root (heap, node); in fibheap_cut()
427 fibheap_cascading_cut (fibheap_t heap, fibnode_t y) in fibheap_cascading_cut() argument
440 fibheap_cut (heap, y, z); in fibheap_cascading_cut()