b_heap.h
Upload User: gzelex
Upload Date: 2007-01-07
Package Size: 707k
Code Size: 2k
Development Platform:

MultiPlatform

  1. /*******************************************************************************
  2. +
  3. +  LEDA-R  3.2.3
  4. +
  5. +  b_heap.h
  6. +
  7. +  Copyright (c) 1995  by  Max-Planck-Institut fuer Informatik
  8. +  Im Stadtwald, 66123 Saarbruecken, Germany     
  9. +  All rights reserved.
  10. *******************************************************************************/
  11. #ifndef LEDA_BHEAP_H
  12. #define LEDA_BHEAP_H
  13. //------------------------------------------------------------------------------
  14. // b_heap: bounded heaps with integer keys in [a..b]
  15. //------------------------------------------------------------------------------
  16. #include <LEDA/basic.h>
  17. #include <LEDA/list.h>
  18. #include <LEDA/array.h>
  19. class b_heap_node {
  20. friend class b_heap;
  21. friend void print_b_heap_item(b_heap_node*);
  22. int key;
  23. GenPtr info;
  24. list_item loc;
  25. b_heap_node(int k, GenPtr i ) 
  26.   key = k; info = i; loc = 0; }
  27.   LEDA_MEMORY(b_heap_node)
  28. };
  29. typedef b_heap_node* b_heap_item;
  30. typedef list<b_heap_item>* b_heap_bucket;
  31. class b_heap {
  32.     int min;
  33.     int max;
  34.     int low;
  35.     int high;
  36.     
  37.     array<b_heap_bucket>  T;
  38. public:
  39. b_heap(int a, int b);
  40. ~b_heap() { clear(); }
  41. b_heap_item insert(int key, GenPtr info) ;
  42. b_heap_item find_min();
  43. b_heap_item find_max();
  44. GenPtr del_min();
  45. GenPtr del_max();
  46. b_heap_item decrease_key(b_heap_item it, int k);
  47. b_heap_item increase_key(b_heap_item it, int k);
  48. void delete_item(b_heap_item it);
  49. void clear();
  50. GenPtr info(b_heap_item it) { return it->info; }
  51. int key(b_heap_item it)  { return it->key; }
  52. int empty()              { return (find_min()==0) ? true : false; }
  53. void print();
  54. };
  55. #endif