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 / dhash2.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1995-11-03  |  14.4 KB  |  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.      cout << "Search: " << (char *) hash.Search("Test53") << "\n";
  208.      cout << "Search: " << (char *) hash.Search("Test54") << "\n";
  209.      cout << "Search: " << (char *) hash.Search("Test55") << "\n";
  210.      cout << "Search: " << (char *) hash.Search("Test56") << "\n";
  211.      cout << "Search: " << (char *) hash.Search("Test57") << "\n";
  212.      cout << "Search: " << (char *) hash.Search("Test58") << "\n";
  213.      cout << "Search: " << (char *) hash.Search("Test59") << "\n";
  214.      cout << "Search: " << (char *) hash.Search("Test60") << "\n";
  215.      cout << "Search: " << (char *) hash.Search("Test61") << "\n";
  216.      cout << "Search: " << (char *) hash.Search("Test62") << "\n";
  217.      cout << "Search: " << (char *) hash.Search("Test63") << "\n";
  218.      cout << "Search: " << (char *) hash.Search("Test64") << "\n";
  219.      cout << "Search: " << (char *) hash.Search("Test65") << "\n";
  220.      cout << "Search: " << (char *) hash.Search("Test66") << "\n";
  221.      cout << "Search: " << (char *) hash.Search("Test67") << "\n";
  222.      cout << "Search: " << (char *) hash.Search("Test68") << "\n";
  223.      cout << "Search: " << (char *) hash.Search("Test69") << "\n";
  224.      cout << "Search: " << (char *) hash.Search("Test70") << "\n";
  225.      cout << "Search: " << (char *) hash.Search("Test71") << "\n";
  226.      cout << "Search: " << (char *) hash.Search("Test72") << "\n";
  227.      cout << "Search: " << (char *) hash.Search("Test73") << "\n";
  228.      cout << "Search: " << (char *) hash.Search("Test74") << "\n";
  229.      cout << "Search: " << (char *) hash.Search("Test75") << "\n";
  230.      cout << "Search: " << (char *) hash.Search("Test76") << "\n";
  231.      cout << "Search: " << (char *) hash.Search("Test77") << "\n";
  232.      cout << "Search: " << (char *) hash.Search("Test78") << "\n";
  233.      cout << "Search: " << (char *) hash.Search("Test79") << "\n";
  234.  
  235.      cout << "Delete: " << (hash -= "Test0") << "\n";
  236.      cout << "Delete: " << (hash -= "Test1") << "\n";
  237.      cout << "Delete: " << (hash -= "Test2") << "\n";
  238.      cout << "Delete: " << (hash -= "Test3") << "\n";
  239.      cout << "Delete: " << (hash -= "Test4") << "\n";
  240.      cout << "Delete: " << (hash -= "Test5") << "\n";
  241.      cout << "Delete: " << (hash -= "Test6") << "\n";
  242.      cout << "Delete: " << (hash -= "Test7") << "\n";
  243.      cout << "Delete: " << (hash -= "Test8") << "\n";
  244.      cout << "Delete: " << (hash -= "Test9") << "\n";
  245.      cout << "Delete: " << hash.Delete("Test10") << "\n";
  246.      cout << "Delete: " << hash.Delete("Test11") << "\n";
  247.      cout << "Delete: " << hash.Delete("Test12") << "\n";
  248.      cout << "Delete: " << hash.Delete("Test13") << "\n";
  249.      cout << "Delete: " << hash.Delete("Test14") << "\n";
  250.      cout << "Delete: " << hash.Delete("Test15") << "\n";
  251.      cout << "Delete: " << hash.Delete("Test16") << "\n";
  252.      cout << "Delete: " << hash.Delete("Test17") << "\n";
  253.      cout << "Delete: " << hash.Delete("Test18") << "\n";
  254.      cout << "Delete: " << hash.Delete("Test19") << "\n";
  255.      cout << "Delete: " << hash.Delete("Test20") << "\n";
  256.      cout << "Delete: " << hash.Delete("Test21") << "\n";
  257.      cout << "Delete: " << hash.Delete("Test22") << "\n";
  258.      cout << "Delete: " << hash.Delete("Test23") << "\n";
  259.      cout << "Delete: " << hash.Delete("Test24") << "\n";
  260.      cout << "Delete: " << hash.Delete("Test25") << "\n";
  261.      cout << "Delete: " << hash.Delete("Test26") << "\n";
  262.      cout << "Delete: " << hash.Delete("Test27") << "\n";
  263.      cout << "Delete: " << hash.Delete("Test28") << "\n";
  264.      cout << "Delete: " << hash.Delete("Test29") << "\n";
  265.      cout << "Delete: " << hash.Delete("Test30") << "\n";
  266.      cout << "Delete: " << hash.Delete("Test31") << "\n";
  267.      cout << "Delete: " << hash.Delete("Test32") << "\n";
  268.      cout << "Delete: " << hash.Delete("Test33") << "\n";
  269.      cout << "Delete: " << hash.Delete("Test34") << "\n";
  270.      cout << "Delete: " << hash.Delete("Test35") << "\n";
  271.      cout << "Delete: " << hash.Delete("Test36") << "\n";
  272.      cout << "Delete: " << hash.Delete("Test37") << "\n";
  273.      cout << "Delete: " << hash.Delete("Test38") << "\n";
  274.      cout << "Delete: " << hash.Delete("Test39") << "\n";
  275.      cout << "Delete: " << hash.Delete("Test40") << "\n";
  276.      cout << "Delete: " << hash.Delete("Test41") << "\n";
  277.      cout << "Delete: " << hash.Delete("Test42") << "\n";
  278.      cout << "Delete: " << hash.Delete("Test43") << "\n";
  279.      cout << "Delete: " << hash.Delete("Test44") << "\n";
  280.      cout << "Delete: " << hash.Delete("Test45") << "\n";
  281.      cout << "Delete: " << hash.Delete("Test46") << "\n";
  282.      cout << "Delete: " << hash.Delete("Test47") << "\n";
  283.      cout << "Delete: " << hash.Delete("Test48") << "\n";
  284.      cout << "Delete: " << hash.Delete("Test49") << "\n";
  285.      cout << "Delete: " << hash.Delete("Test50") << "\n";
  286.      cout << "Delete: " << hash.Delete("Test51") << "\n";
  287.      cout << "Delete: " << hash.Delete("Test52") << "\n";
  288.      cout << "Delete: " << hash.Delete("Test53") << "\n";
  289.      cout << "Delete: " << hash.Delete("Test54") << "\n";
  290.      cout << "Delete: " << hash.Delete("Test55") << "\n";
  291.      cout << "Delete: " << hash.Delete("Test56") << "\n";
  292.      cout << "Delete: " << hash.Delete("Test57") << "\n";
  293.      cout << "Delete: " << hash.Delete("Test58") << "\n";
  294.      cout << "Delete: " << hash.Delete("Test59") << "\n";
  295.      cout << "Delete: " << hash.Delete("Test60") << "\n";
  296.      cout << "Delete: " << hash.Delete("Test61") << "\n";
  297.      cout << "Delete: " << hash.Delete("Test62") << "\n";
  298.      cout << "Delete: " << hash.Delete("Test63") << "\n";
  299.      cout << "Delete: " << hash.Delete("Test64") << "\n";
  300.      cout << "Delete: " << hash.Delete("Test65") << "\n";
  301.      cout << "Delete: " << hash.Delete("Test66") << "\n";
  302.      cout << "Delete: " << hash.Delete("Test67") << "\n";
  303.      cout << "Delete: " << hash.Delete("Test68") << "\n";
  304.      cout << "Delete: " << hash.Delete("Test69") << "\n";
  305.      cout << "Delete: " << hash.Delete("Test70") << "\n";
  306.      cout << "Delete: " << hash.Delete("Test71") << "\n";
  307.      cout << "Delete: " << hash.Delete("Test72") << "\n";
  308.      cout << "Delete: " << hash.Delete("Test73") << "\n";
  309.      cout << "Delete: " << hash.Delete("Test74") << "\n";
  310.      cout << "Delete: " << hash.Delete("Test75") << "\n";
  311.      cout << "Delete: " << hash.Delete("Test76") << "\n";
  312.      cout << "Delete: " << hash.Delete("Test77") << "\n";
  313.      cout << "Delete: " << hash.Delete("Test78") << "\n";
  314.      cout << "Delete: " << hash.Delete("Test79") << "\n";
  315.      cout << "Delete: " << hash.Delete("Test79") << "\n";
  316.  
  317.      cout << "Num Items: " << hash.NumItems() << "\n";
  318.      hash.Execute();
  319.      cout << "Is Empty: " << (hash.IsEmpty() ? "Yes" : "No") << "\n";
  320.      hash.Clear();
  321.      cout << "Is Empty: " << (hash.IsEmpty() ? "Yes" : "No") << "\n";
  322.      cout << "Num Items: " << hash.NumItems() << "\n";
  323.      hash.Execute();
  324.       }
  325.     return(0);
  326.   }
  327.