ch_array.h
上传用户:gzelex
上传日期:2007-01-07
资源大小:707k
文件大小:2k
开发平台:

MultiPlatform

  1. /*******************************************************************************
  2. +
  3. +  LEDA-R  3.2.3
  4. +
  5. +  ch_array.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_CH_HASHING3_H
  12. #define LEDA_CH_HASHING3_H
  13. //------------------------------------------------------------------------------
  14. // Hashing Array with Chaining
  15. //
  16. // S. Naeher  (1994)
  17. //
  18. //------------------------------------------------------------------------------
  19. #include <LEDA/basic.h>
  20.  
  21. //------------------------------------------------------------------------------
  22. // class ch_array_elem  
  23. //------------------------------------------------------------------------------
  24. class ch_array_elem 
  25. {
  26.   friend class ch_array;
  27.   ch_array_elem* succ;
  28.   GenPtr k;
  29.   GenPtr i;
  30. };
  31. typedef ch_array_elem*  ch_array_item;
  32. //--------------------------------------------------------------------
  33. // class ch_array
  34. //--------------------------------------------------------------------
  35. class ch_array 
  36. {
  37.    static ch_array_elem STOP;
  38.    ch_array_elem* table;
  39.    ch_array_elem* table_end;
  40.    ch_array_elem* free;
  41.    ch_array_elem* iterator;
  42.    int table_size;           
  43.    int table_size_1;           
  44.    int shift;
  45.    virtual int  hash_fct(GenPtr)    const { return 0; }
  46.    virtual void clear_inf(GenPtr&)  const { }
  47.    virtual void copy_inf(GenPtr&)   const { }
  48.    virtual void init_inf(GenPtr&)   const { }
  49.    void init_table(int);
  50.    void rehash();
  51.    void destroy();
  52.    public:
  53.    GenPtr& access(GenPtr);
  54.    GenPtr  access(GenPtr) const;
  55.    GenPtr  lookup(GenPtr) const;
  56.    void print();
  57.    ch_array_item first_item() const;
  58.    ch_array_item next_item(ch_array_item) const;
  59.    ch_array& operator=(const ch_array&);
  60.    ch_array(const ch_array&);
  61.    ch_array(int n=1024); 
  62.    virtual ~ch_array() { destroy(); }
  63.    GenPtr key(ch_array_item p) const { return p->k; }
  64.    GenPtr inf(ch_array_item p) const { return p->i; }
  65. };
  66. #endif