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