title
Graph Drawing Toolkit

An object-oriented C++ library for handling and drawing graphs

gdtp_queue.h

Go to the documentation of this file.
00001 
00003 #ifndef __gdtp_queue__
00004 #define __gdtp_queue__
00005 
00006 #include "gdtbinary_heap2.h"
00007 
00008 namespace gdt {
00009 
00010 typedef heap_item pq_item;
00011 
00012 template <class T, class L> 
00013 struct LessToGreater { 
00014         bool operator () (const T& x, const T& y) {
00015                 return L()(y,x);
00016         }
00017 };
00018 
00019 template<class P, class I, class less = stdless<P> > 
00020 class gdtp_queue : protected gdtbinary_heap2<P, I, LessToGreater<P, less> > 
00021 {
00022         typedef gdtbinary_heap2<P, I, LessToGreater<P, less> > base;    
00023 
00024 public: 
00025 
00026         const P& prio(pq_item it) const 
00027         { 
00028                 return base::prio(it);
00029         }
00030 
00031         const I& inf(pq_item it) const {        
00032                 return base::inf(it);
00033         }
00034 
00035         pq_item insert(const P& p, const I& i) {
00036                 return base::insert(p,i);
00037         }
00038 
00039         pq_item find_min() const { 
00040                 return base::find_max();
00041         }
00042 
00043         void decrease_p(pq_item it, const P& x) { 
00044                 base::increase_key(it,x); 
00045         }       
00046 
00047         P del_min() 
00048         { 
00049                 assert(base::size()>0);
00050                 P p = base::prio(base::find_max());
00051                 base::extract_max();
00052                 return p;
00053         }
00054 
00055         void del_item(pq_item it) {
00056                 base::remove(it);
00057         }
00058 
00059         bool empty() const {
00060                 return base::size() == 0;
00061         }
00062 
00063         typedef heap_item item;
00064         heap_item first_item() const { return base::data.first(); }
00065         heap_item last_item() const { return base::data.last(); }
00066         heap_item next_item(heap_item p) const { return base::data.next_item(p); }
00067         heap_item pred_item(heap_item p) const { return base::data.pred_item(p); }
00068 };
00069 
00070 
00071 }
00072 
00073 
00074 
00075 #endif
00076 

Generated on Thu Jan 10 14:48:01 2008 for GDToolkit GAPI by  doxygen 1.5.3