forked from vieter-v/libvieter
test(heap): some more tests to expose flaws
This commit is contained in:
parent
63100c5b99
commit
dc557f57ab
4 changed files with 73 additions and 37 deletions
|
|
@ -56,14 +56,6 @@ vieter_heap_error vieter_heap_pop(void **out, vieter_heap *heap) {
|
|||
return vieter_heap_empty;
|
||||
}
|
||||
|
||||
if (heap->tree->order == 0 && heap->tree->ptr.next_tree == NULL) {
|
||||
*out = heap->tree->data;
|
||||
vieter_heap_tree_free(heap->tree);
|
||||
heap->tree = NULL;
|
||||
|
||||
return vieter_heap_ok;
|
||||
}
|
||||
|
||||
heap->tree = vieter_heap_tree_pop(out, heap->tree);
|
||||
|
||||
return vieter_heap_ok;
|
||||
|
|
|
|||
|
|
@ -167,6 +167,9 @@ vieter_heap_node *vieter_heap_tree_pop(void **out, vieter_heap_node *tree) {
|
|||
return original_root;
|
||||
}
|
||||
|
||||
// Each child has a pointer to its sibling with the next largest order. If we
|
||||
// want to convert this list of children into their own tree, these pointers
|
||||
// have to be reversed.
|
||||
previous_tree = tree_to_pop->largest_order;
|
||||
vieter_heap_node_free(tree_to_pop);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue