home *** CD-ROM | disk | FTP | other *** search
/ C/C++ User's Journal & Wi…eveloper's Journal Tools / C-C__Users_Journal_and_Windows_Developers_Journal_Tools_1997.iso / windbase / windbase.exe / MEMSLCPP.3 / HASH1.CPP < prev    next >
C/C++ Source or Header  |  1996-05-11  |  4KB  |  103 lines

  1. /***************************************************************************\
  2. **                                                                         **
  3. ** WW     WW IIIIIIII NNN   NN DDDDDDD  BBBBBBB     AA     SSSSSS EEEEEEEE **
  4. ** WW  W  WW    II    NNNN  NN DD    DD BB    BB  AA  AA  SS      EE       **
  5. ** WW  W  WW    II    NN NN NN DD    DD BBBBBBB  AAAAAAAA  SSSSSS EEEEEE   **
  6. **  WW W WW     II    NN  NNNN DD    DD BB    BB AA    AA      SS EE       **
  7. **   WWWWW   IIIIIIII NN   NNN DDDDDDD  BBBBBBB  AA    AA SSSSSS  EEEEEEEE **
  8. **                                                                         **
  9. **  SSSSSS  OOOOOO  FFFFFFFF TTTTTTTT WW     WW    AA    RRRRRRR  EEEEEEEE **
  10. ** SS      OO    OO FF          TT    WW  W  WW  AA  AA  RR    RR EE       **
  11. **  SSSSS  OO    OO FFFFF       TT    WW  W  WW AAAAAAAA RRRRRRR  EEEEEE   **
  12. **      SS OO    OO FF          TT     WW W WW  AA    AA RR   RR  EE       **
  13. ** SSSSSS   OOOOOO  FF          TT      WWWWW   AA    AA RR    RR EEEEEEEE **
  14. **                                                                         **
  15. ********** NOTICE ***********************************************************
  16. **       This file contains valuable trade secrets and proprietary         **
  17. **       assets of Windbase Software Inc.  Embodying substantial           **
  18. **       creative efforts and confidential information.  Unauthorized      **
  19. **       use, copying, decompiling, translating, disclosure or             **
  20. **       transfer, of any kind, is strictly prohibited.                    **
  21. **                                                                         **
  22. **       COPYRIGHT (C) 1992, 1993, 1994, 1995.  Windbase Software Inc.     **
  23. **       ALL RIGHTS RESERVED.                                              **
  24. \***************************************************************************/
  25.  
  26. /*
  27. ** Hashing Table with Seperate Chaining - Templates Version
  28. */
  29.  
  30. template <class USRDEF>
  31. class MyHash : public WBHash<USRDEF>
  32.   {
  33.     unsigned int WBHashingFunct(void *nullitem, char *item);
  34.  
  35.     void WBExecuteFunct(void *nullitem, char *item)
  36.       {
  37.     nullitem = nullitem;
  38.     cout << "Execute: " << item << "\n";
  39.       }
  40.  
  41.     void WBDeleteFunct(void *nullitem, char *item)
  42.       {
  43.     nullitem = nullitem;
  44.     cout << "Delete: " << item << "\n";
  45.       }
  46.  
  47.     int WBCompareFunct(void *nullitem, char *item1, char *item2)
  48.       {
  49.     nullitem = nullitem;
  50.     return(strcmp(item1,item2));
  51.       }
  52.  
  53.     public:
  54.       MyHash(int size) : WBHash<USRDEF>(size) {}
  55.   };
  56.  
  57. template <class USRDEF>
  58. unsigned int MyHash<USRDEF>::WBHashingFunct(void *nullitem, char *item)
  59.   {
  60.     unsigned int i, val = 0;
  61.  
  62.     nullitem = nullitem;
  63.     for (i = 0; i < strlen(item); i++)
  64.       val += item[i];
  65.     return(val);
  66.   }
  67.  
  68. main()
  69.   {
  70.     MyHash<char *> hash(10);
  71.  
  72.     hash.Add("Test0");
  73.     hash.Add("Test1");
  74.     hash.Add("Test2");
  75.     hash.Add("Test3");
  76.     hash.Add("Test4");
  77.     hash.Add("Test5");
  78.     hash.Add("Test6");
  79.     hash += "Test7";
  80.     hash += "Test8";
  81.     hash += "Test9";
  82.     hash += "Test4";
  83.     hash += "Test1";
  84.     hash += "Test2";
  85.     hash += "Test3";
  86.  
  87.     cout << "Num Items: " << hash.NumItems() << "\n";
  88.     hash.Delete("Test4");
  89.     hash -= "Test5";
  90.     cout << "Search: " << hash.Search("Test6") << "\n";
  91.     hash.DelNode();
  92.     hash.DelNode();
  93.     cout << "Num Items: " << hash.NumItems() << "\n";
  94.     hash.Execute();
  95.     cout << "Is Empty: " << (hash.IsEmpty() ? "Yes" : "No") << "\n";
  96.     hash.Clear();
  97.     cout << "Is Empty: " << (hash.IsEmpty() ? "Yes" : "No") << "\n";
  98.     cout << "Num Items: " << hash.NumItems() << "\n";
  99.     hash.Execute();
  100.  
  101.     return(0);
  102.   }
  103.