fix library heap
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@280 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
2fd3f33819
commit
fcbf07a251
@ -6586,6 +6586,12 @@ stable, that is, if you insert several pairs with the same @var{Key} it
|
|||||||
is not defined which of them will come out first, and it is possible for
|
is not defined which of them will come out first, and it is possible for
|
||||||
any of them to come out first depending on the history of the heap.
|
any of them to come out first depending on the history of the heap.
|
||||||
|
|
||||||
|
@item empty_heap(?@var{Heap})
|
||||||
|
@findex empty_heap/1
|
||||||
|
@syindex empty_heap/1
|
||||||
|
@cnindex empty_heap/1
|
||||||
|
Succeeds if @var{Heap} is an empty heap.
|
||||||
|
|
||||||
@item get_from_heap(+@var{Heap},-@var{key},-@var{Datum},-@var{Heap})
|
@item get_from_heap(+@var{Heap},-@var{key},-@var{Datum},-@var{Heap})
|
||||||
@findex get_from_heap/4
|
@findex get_from_heap/4
|
||||||
@syindex get_from_heap/4
|
@syindex get_from_heap/4
|
||||||
|
@ -43,6 +43,7 @@
|
|||||||
:- module(heaps,[
|
:- module(heaps,[
|
||||||
add_to_heap/4, % Heap x Key x Datum -> Heap
|
add_to_heap/4, % Heap x Key x Datum -> Heap
|
||||||
get_from_heap/4, % Heap -> Key x Datum x Heap
|
get_from_heap/4, % Heap -> Key x Datum x Heap
|
||||||
|
empty_heap/1, % Heap
|
||||||
heap_size/2, % Heap -> Size
|
heap_size/2, % Heap -> Size
|
||||||
heap_to_list/2, % Heap -> List
|
heap_to_list/2, % Heap -> List
|
||||||
list_to_heap/2, % List -> Heap
|
list_to_heap/2, % List -> Heap
|
||||||
@ -95,7 +96,7 @@ add_to_heap(t(M,[H|T],OldTree), Key, Datum, t(N,T,NewTree)) :-
|
|||||||
add_to_heap(1, Key, Datum, _, t(Key,Datum,t,t)) :- !.
|
add_to_heap(1, Key, Datum, _, t(Key,Datum,t,t)) :- !.
|
||||||
add_to_heap(N, Key, Datum, t(K1,D1,L1,R1), t(K2,D2,L2,R2)) :-
|
add_to_heap(N, Key, Datum, t(K1,D1,L1,R1), t(K2,D2,L2,R2)) :-
|
||||||
E is N mod 2,
|
E is N mod 2,
|
||||||
M is N/2,
|
M is N//2,
|
||||||
% M > 0, % only called from list_to_heap/4,add_to_heap/4
|
% M > 0, % only called from list_to_heap/4,add_to_heap/4
|
||||||
sort2(Key, Datum, K1, D1, K2, D2, K3, D3),
|
sort2(Key, Datum, K1, D1, K2, D2, K3, D3),
|
||||||
add_to_heap(E, M, K3, D3, L1, R1, L2, R2).
|
add_to_heap(E, M, K3, D3, L1, R1, L2, R2).
|
||||||
@ -227,3 +228,6 @@ min_of_heap(t(Ka,Da,_,_), t(Kb,Db,_,_), Kb, Db) :-
|
|||||||
min_of_heap(t(Ka,Da,_,_), _, Ka, Da).
|
min_of_heap(t(Ka,Da,_,_), _, Ka, Da).
|
||||||
min_of_heap(t, t(Kb,Db,_,_), Kb, Db).
|
min_of_heap(t, t(Kb,Db,_,_), Kb, Db).
|
||||||
|
|
||||||
|
empty_heap(t(0,[],t)).
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user