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 / memslcpp.3 / dhash1.cpp < prev    next >
C/C++ Source or Header  |  1996-05-11  |  14KB  |  333 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 Dynamic Paging and Seperate Chaining
  28. ** Templates Version
  29. */
  30.  
  31. template <class USRDEF>
  32. class MyDHash : public WBDHash<USRDEF>
  33.   {
  34.     unsigned int WBHashingFunct(void *nullitem, char *item);
  35.  
  36.     void WBExecuteFunct(void *nullitem, char *item)
  37.       {
  38.     nullitem = nullitem;
  39.     cout << "Execute: " << item << "\n";
  40.       }
  41.  
  42.     int WBCompareFunct(void *nullitem, char *item1, char *item2)
  43.       {
  44.     nullitem = nullitem;
  45.     return(strcmp(item1,item2));
  46.       }
  47.  
  48.     public:
  49.       MyDHash(int avgitems) : WBDHash<USRDEF>(avgitems) {}
  50.   };
  51.  
  52. template <class USRDEF>
  53. unsigned int MyDHash<USRDEF>::WBHashingFunct(void *nullitem, char *item)
  54.   {
  55.     unsigned int i, val = 0;
  56.  
  57.     nullitem = nullitem;
  58.  
  59.     for (i = 0; i < strlen(item); i++)
  60.       val += item[i];
  61.  
  62.     return(val);
  63.   }
  64.  
  65. main()
  66.   {
  67.     MyDHash<char *> hash(5);
  68.     int i;
  69.  
  70.     for (i = 0; i < 20; i++)
  71.       {
  72.      hash += "Test0";
  73.      hash += "Test1";
  74.      hash += "Test2";
  75.      hash += "Test3";
  76.      hash += "Test4";
  77.      hash += "Test5";
  78.      hash += "Test6";
  79.      hash += "Test7";
  80.      hash += "Test8";
  81.      hash += "Test9";
  82.      hash.Add("Test10");
  83.      hash.Add("Test11");
  84.      hash.Add("Test12");
  85.      hash.Add("Test13");
  86.      hash.Add("Test14");
  87.      hash.Add("Test15");
  88.      hash.Add("Test16");
  89.      hash.Add("Test17");
  90.      hash.Add("Test18");
  91.      hash.Add("Test19");
  92.      hash.Add("Test20");
  93.      hash.Add("Test21");
  94.      hash.Add("Test22");
  95.      hash.Add("Test23");
  96.      hash.Add("Test24");
  97.      hash.Add("Test25");
  98.      hash.Add("Test26");
  99.      hash.Add("Test27");
  100.      hash.Add("Test28");
  101.      hash.Add("Test29");
  102.      hash.Add("Test30");
  103.      hash.Add("Test31");
  104.      hash.Add("Test32");
  105.      hash.Add("Test33");
  106.      hash.Add("Test34");
  107.      hash.Add("Test35");
  108.      hash.Add("Test36");
  109.      hash.Add("Test37");
  110.      hash.Add("Test38");
  111.      hash.Add("Test39");
  112.      hash.Add("Test40");
  113.      hash.Add("Test41");
  114.      hash.Add("Test42");
  115.      hash.Add("Test43");
  116.      hash.Add("Test44");
  117.      hash.Add("Test45");
  118.      hash.Add("Test46");
  119.      hash.Add("Test47");
  120.      hash.Add("Test48");
  121.      hash.Add("Test49");
  122.      hash.Add("Test50");
  123.      hash.Add("Test51");
  124.      hash.Add("Test52");
  125.      hash.Add("Test53");
  126.      hash.Add("Test54");
  127.      hash.Add("Test55");
  128.      hash.Add("Test56");
  129.      hash.Add("Test57");
  130.      hash.Add("Test58");
  131.      hash.Add("Test59");
  132.      hash.Add("Test60");
  133.      hash.Add("Test61");
  134.      hash.Add("Test62");
  135.      hash.Add("Test63");
  136.      hash.Add("Test64");
  137.      hash.Add("Test65");
  138.      hash.Add("Test66");
  139.      hash.Add("Test67");
  140.      hash.Add("Test68");
  141.      hash.Add("Test69");
  142.      hash.Add("Test70");
  143.      hash.Add("Test71");
  144.      hash.Add("Test72");
  145.      hash.Add("Test73");
  146.      hash.Add("Test74");
  147.      hash.Add("Test75");
  148.      hash.Add("Test76");
  149.      hash.Add("Test77");
  150.      hash.Add("Test78");
  151.      hash.Add("Test79");
  152.      hash.Add("Test4");
  153.      hash.Add("Test1");
  154.      hash.Add("Test2");
  155.      hash.Add("Test3");
  156.  
  157.      hash.Execute();
  158.  
  159.      cout << "Num Items: " << hash.NumItems() << "\n";
  160.      cout << "Search: " << hash.Search("Test0") << "\n";
  161.      cout << "Search: " << hash.Search("Test1") << "\n";
  162.      cout << "Search: " << hash.Search("Test2") << "\n";
  163.      cout << "Search: " << hash.Search("Test3") << "\n";
  164.      cout << "Search: " << hash.Search("Test4") << "\n";
  165.      cout << "Search: " << hash.Search("Test5") << "\n";
  166.      cout << "Search: " << hash.Search("Test6") << "\n";
  167.      cout << "Search: " << hash.Search("Test7") << "\n";
  168.      cout << "Search: " << hash.Search("Test8") << "\n";
  169.      cout << "Search: " << hash.Search("Test9") << "\n";
  170.      cout << "Search: " << hash.Search("Test10") << "\n";
  171.      cout << "Search: " << hash.Search("Test11") << "\n";
  172.      cout << "Search: " << hash.Search("Test12") << "\n";
  173.      cout << "Search: " << hash.Search("Test13") << "\n";
  174.      cout << "Search: " << hash.Search("Test14") << "\n";
  175.      cout << "Search: " << hash.Search("Test15") << "\n";
  176.      cout << "Search: " << hash.Search("Test16") << "\n";
  177.      cout << "Search: " << hash.Search("Test17") << "\n";
  178.      cout << "Search: " << hash.Search("Test18") << "\n";
  179.      cout << "Search: " << hash.Search("Test19") << "\n";
  180.      cout << "Search: " << hash.Search("Test20") << "\n";
  181.      cout << "Search: " << hash.Search("Test21") << "\n";
  182.      cout << "Search: " << hash.Search("Test22") << "\n";
  183.      cout << "Search: " << hash.Search("Test23") << "\n";
  184.      cout << "Search: " << hash.Search("Test24") << "\n";
  185.      cout << "Search: " << hash.Search("Test25") << "\n";
  186.      cout << "Search: " << hash.Search("Test26") << "\n";
  187.      cout << "Search: " << hash.Search("Test27") << "\n";
  188.      cout << "Search: " << hash.Search("Test28") << "\n";
  189.      cout << "Search: " << hash.Search("Test29") << "\n";
  190.      cout << "Search: " << hash.Search("Test30") << "\n";
  191.      cout << "Search: " << hash.Search("Test31") << "\n";
  192.      cout << "Search: " << hash.Search("Test32") << "\n";
  193.      cout << "Search: " << hash.Search("Test33") << "\n";
  194.      cout << "Search: " << hash.Search("Test34") << "\n";
  195.      cout << "Search: " << hash.Search("Test35") << "\n";
  196.      cout << "Search: " << hash.Search("Test36") << "\n";
  197.      cout << "Search: " << hash.Search("Test37") << "\n";
  198.      cout << "Search: " << hash.Search("Test38") << "\n";
  199.      cout << "Search: " << hash.Search("Test39") << "\n";
  200.      cout << "Search: " << hash.Search("Test40") << "\n";
  201.      cout << "Search: " << hash.Search("Test41") << "\n";
  202.      cout << "Search: " << hash.Search("Test42") << "\n";
  203.      cout << "Search: " << hash.Search("Test43") << "\n";
  204.      cout << "Search: " << hash.Search("Test44") << "\n";
  205.      cout << "Search: " << hash.Search("Test45") << "\n";
  206.      cout << "Search: " << hash.Search("Test46") << "\n";
  207.      cout << "Search: " << hash.Search("Test47") << "\n";
  208.      cout << "Search: " << hash.Search("Test48") << "\n";
  209.      cout << "Search: " << hash.Search("Test49") << "\n";
  210.      cout << "Search: " << hash.Search("Test50") << "\n";
  211.      cout << "Search: " << hash.Search("Test51") << "\n";
  212.      cout << "Search: " << hash.Search("Test52") << "\n";
  213.      cout << "Search: " << hash.Search("Test53") << "\n";
  214.      cout << "Search: " << hash.Search("Test54") << "\n";
  215.      cout << "Search: " << hash.Search("Test55") << "\n";
  216.      cout << "Search: " << hash.Search("Test56") << "\n";
  217.      cout << "Search: " << hash.Search("Test57") << "\n";
  218.      cout << "Search: " << hash.Search("Test58") << "\n";
  219.      cout << "Search: " << hash.Search("Test59") << "\n";
  220.      cout << "Search: " << hash.Search("T