bheap.h

Go to the documentation of this file.
00001 
00061 #ifndef ABA_BHEAP_H
00062 #define ABA_BHEAP_H
00063 
00064 #include "abacus/array.h"
00065 
00066 #ifdef ABACUS_NEW_TEMPLATE_SYNTAX
00067 template<class Type, class Key> 
00068 class ABA_BHEAP;
00069 
00070 template<class Type,class Key>
00071 ostream&operator<< (ostream& out, const ABA_BHEAP<Type, Key>& rhs);
00072 #endif
00073 
00074   template<class Type, class Key> class  ABA_BHEAP :  public ABA_ABACUSROOT  {
00075     public: 
00076 
00082       ABA_BHEAP(ABA_GLOBAL *glob, int size);
00083 
00094       ABA_BHEAP(ABA_GLOBAL *glob, 
00095                 const ABA_BUFFER<Type> &elems, 
00096                 const ABA_BUFFER<Key> &keys);
00097 #ifdef ABACUS_NEW_TEMPLATE_SYNTAX
00098 
00107       friend ostream& operator<< <> (ostream&, const ABA_BHEAP<Type, Key>&);
00108 #else
00109 
00118       friend ostream& operator<< (ostream& out, const ABA_BHEAP<Type, Key>& rhs);
00119 #endif
00120 
00132       void insert(Type elem, Key key);
00133 
00139       Type getMin() const;
00140 
00147       Key getMinKey() const;
00148 
00161       Type extractMin();
00162 
00163 
00166       void clear();
00167 
00170       int size() const;
00171 
00174       int number() const;
00175 
00179       bool empty() const;
00180 
00185       void realloc(int newSize);
00186 
00192       void check() const;
00193 
00194     private: 
00195 
00198       int  leftSon(int i) const;
00199 
00202       int  rightSon(int i) const;
00203 
00206       int  father(int i) const;
00207 
00214       void heapify(int i);
00215 
00216       ABA_GLOBAL *glob_;
00217       ABA_ARRAY<Type>  heap_;
00218       ABA_ARRAY<Key>   keys_;
00219       int          n_;
00220   };
00221 
00222 #include "abacus/bheap.inc" 
00223 
00224 #endif  // !ABA_BHEAP_H
00225 
00226 

Generated on Tue Aug 14 18:09:53 2007 for ABACUS by  doxygen 1.5.1