misc fixes
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1068 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
@@ -36,6 +36,7 @@ PROGRAMS= $(srcdir)/apply_macros.yap \
|
||||
$(srcdir)/prandom.yap \
|
||||
$(srcdir)/queues.yap \
|
||||
$(srcdir)/random.yap \
|
||||
$(srcdir)/rbtrees.yap \
|
||||
$(srcdir)/regexp.yap \
|
||||
$(srcdir)/splay.yap \
|
||||
$(srcdir)/system.yap \
|
||||
|
@@ -14,6 +14,7 @@
|
||||
:- module(rbtrees,
|
||||
[new/1,
|
||||
lookup/3,
|
||||
lookupall/3,
|
||||
insert/4,
|
||||
delete/3]).
|
||||
|
||||
@@ -25,8 +26,8 @@ new(K,V,black(Nil,K,V,Nil)) :-
|
||||
|
||||
lookup(Key, Val, black([],_,_,[])) :- !, fail.
|
||||
lookup(Key, Val, Tree) :-
|
||||
arg(Tree,2,KA),
|
||||
compare(Cmp,KA,Key,Tree),
|
||||
arg(2,Tree,KA),
|
||||
compare(Cmp,KA,Key),
|
||||
lookup(Cmp,Key,Val,Tree).
|
||||
|
||||
lookup(<, K, V, Tree) :-
|
||||
@@ -35,9 +36,27 @@ lookup(<, K, V, Tree) :-
|
||||
lookup(>, K, V, Tree) :-
|
||||
arg(4,Tree,NTree),
|
||||
lookup(K, V, NTree).
|
||||
lookup(>, K, V, Tree) :-
|
||||
lookup(=, K, V, Tree) :-
|
||||
arg(3,Tree,V).
|
||||
|
||||
lookupall(Key, Val, black([],_,_,[])) :- !, fail.
|
||||
lookupall(Key, Val, Tree) :-
|
||||
arg(2,Tree,KA),
|
||||
compare(Cmp,KA,Key),
|
||||
lookupall(Cmp,Key,Val,Tree).
|
||||
|
||||
lookupall(>, K, V, Tree) :-
|
||||
arg(4,Tree,NTree),
|
||||
lookupall(K, V, NTree).
|
||||
lookupall(=, K, V, Tree) :-
|
||||
arg(3,Tree,V).
|
||||
lookupall(=, K, V, Tree) :-
|
||||
arg(1,Tree,NTree),
|
||||
lookupall(K, V, NTree).
|
||||
lookupall(<, K, V, Tree) :-
|
||||
arg(1,Tree,NTree),
|
||||
lookupall(K, V, NTree).
|
||||
|
||||
%
|
||||
% Tree insertion
|
||||
%
|
||||
|
Reference in New Issue
Block a user