abstype heap *
with emptyheap :: heap *
isempty :: heap * -> bool
deletemin :: heap * -> *
add :: * -> heap * -> heap *
heapnode *
::= Nil | HeapNode * (heapnode *) (heapnode *)
heap * == heapnode *
emptyheap = Nil
isempty Nil = True
isempty (HeapNode a b c) = False
additem item Nil = (HeapNode item Nil Nil)
additem item (HeapNode a b c)
= (HeapNode (a) (additem item b) (c))
, if a < item
= (HeapNode (item) (b) (additem a c))
, otherwise
getmin Nil = error "getmin of empty heap"
getmin (HeapNode a b c) = a
Last modified: Wed May 17 23:32:46 PDT 2000