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 / tavltre2.cpp < prev    next >
C/C++ Source or Header  |  1995-11-04  |  20KB  |  446 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. ** AVL Balanced Threaded Binary Tree - Non Templates Version
  28. */
  29.  
  30. int Compare(void *nullitem, char *item1, char *item2)
  31.   {
  32.     nullitem = nullitem;
  33.  
  34.     if (item1 == NULL || item2 == NULL)
  35.       {
  36.     cout << "Compare: null value.  Aborting...\n";
  37.     exit(1);
  38.       }
  39.     return(strcmp(item1,item2));
  40.   }
  41.  
  42. void Print(void *nullitem, char *item)
  43.   {
  44.     nullitem = nullitem;
  45.  
  46.     if (item)
  47.       cout << "Execute: " << item << "\n";
  48.     else
  49.       cout << "Execute: null value\n";
  50.   }
  51.  
  52. main()
  53.   {
  54.     WBTAVLTree tree;
  55.     char *strptr;
  56.     int i;
  57.  
  58.     tree.SetCompare(NULL,(int (*)(void *, void *, void *))Compare);
  59.     tree.SetExecute(NULL,(void (*)(void *, void *))Print);
  60.  
  61.     for (i = 0; i < 5; i++)
  62.       {
  63.     cout << "====================================================\n";
  64.     tree += "Item00";
  65.     tree += "Item01";
  66.     tree += "Item02";
  67.     tree += "Item03";
  68.     tree += "Item04";
  69.     tree += "Item05";
  70.     tree += "Item06";
  71.     tree += "Item07";
  72.     tree += "Item08";
  73.     tree += "Item09";
  74.     tree.Add("Item10");
  75.     tree.Add("Item11");
  76.     tree.Add("Item12");
  77.     tree.Add("Item13");
  78.     tree.Add("Item14");
  79.     tree.Add("Item15");
  80.     tree.Add("Item16");
  81.     tree.Add("Item17");
  82.     tree.Add("Item18");
  83.     tree.Add("Item19");
  84.     tree.Add("Item20");
  85.     tree.Add("Item21");
  86.     tree.Add("Item22");
  87.     tree.Add("Item23");
  88.     tree.Add("Item24");
  89.     tree.Add("Item25");
  90.     tree.Add("Item26");
  91.     tree.Add("Item27");
  92.     tree.Add("Item28");
  93.     tree.Add("Item29");
  94.     tree.Add("Item30");
  95.     tree.Add("Item31");
  96.     tree.Add("Item32");
  97.     tree.Add("Item33");
  98.     tree.Add("Item34");
  99.     tree.Add("Item35");
  100.     tree.Add("Item36");
  101.     tree.Add("Item37");
  102.     tree.Add("Item38");
  103.     tree.Add("Item39");
  104.     tree.Add("Item40");
  105.     tree.Add("Item41");
  106.     tree.Add("Item42");
  107.     tree.Add("Item43");
  108.     tree.Add("Item44");
  109.     tree.Add("Item45");
  110.     tree.Add("Item46");
  111.     tree.Add("Item47");
  112.     tree.Add("Item48");
  113.     tree.Add("Item49");
  114.     tree.Add("Item50");
  115.     tree.Add("Item51");
  116.     tree.Add("Item52");
  117.     tree.Add("Item53");
  118.     tree.Add("Item54");
  119.     tree.Add("Item55");
  120.     tree.Add("Item56");
  121.     tree.Add("Item57");
  122.     tree.Add("Item58");
  123.     tree.Add("Item59");
  124.     tree.Add("Item60");
  125.     tree.Add("Item61");
  126.     tree.Add("Item62");
  127.     tree.Add("Item63");
  128.     tree.Add("Item64");
  129.     tree.Add("Item65");
  130.     tree.Add("Item66");
  131.     tree.Add("Item67");
  132.     tree.Add("Item68");
  133.     tree.Add("Item69");
  134.     tree.Add("Item70");
  135.     tree.Add("Item71");
  136.     tree.Add("Item72");
  137.     tree.Add("Item73");
  138.     tree.Add("Item74");
  139.     tree.Add("Item75");
  140.     tree.Add("Item76");
  141.     tree.Add("Item77");
  142.     tree.Add("Item78");
  143.     tree.Add("Item79");
  144.     tree.Add("Item80");
  145.     tree.Add("Item81");
  146.     tree.Add("Item82");
  147.     tree.Add("Item83");
  148.     tree.Add("Item84");
  149.     tree.Add("Item85");
  150.     tree.Add("Item86");
  151.     tree.Add("Item87");
  152.     tree.Add("Item88");
  153.     tree.Add("Item89");
  154.     tree.Add("Item90");
  155.     tree.Add("Item91");
  156.     tree.Add("Item92");
  157.     tree.Add("Item93");
  158.     tree.Add("Item94");
  159.     tree.Add("Item95");
  160.     tree.Add("Item96");
  161.     tree.Add("Item97");
  162.     tree.Add("Item98");
  163.     tree.Add("Item99");
  164.     tree.Add("Item00");
  165.     tree.Add("Item01");
  166.     tree.Add("Item02");
  167.     tree.Add("Item03");
  168.     tree.Add("Item04");
  169.     tree.Add("Item05");
  170.     tree.Add("Item06");
  171.     tree.Add("Item07");
  172.     tree.Add("Item08");
  173.     tree.Add("Item09");
  174.     tree.Add("Item00");
  175.     tree.Add("Item01");
  176.     tree.Add("Item02");
  177.     tree.Add("Item03");
  178.     tree.Add("Item04");
  179.     tree.Add("Item05");
  180.     tree.Add("Item06");
  181.     tree.Add("Item07");
  182.     tree.Add("Item08");
  183.     tree.Add("Item09");
  184.     tree += "Item100";
  185.     tree += "Item101";
  186.     tree += "Item102";
  187.     tree += "Item103";
  188.     tree += "Item104";
  189.     tree += "Item105";
  190.     tree += "Item106";
  191.     tree += "Item107";
  192.     tree += "Item108";
  193.  
  194.     tree.Execute();
  195.  
  196.     cout << "GetLast(): " << (char *) tree.GetLast() << "\n";
  197.     cout << "GetFirst(): " << (char *) tree.GetFirst() << "\n";
  198.  
  199.     while ((strptr = (char *) tree.GetNext()) != NULL)
  200.       cout << "GetNext(): " << strptr << "\n";
  201.  
  202.     while ((strptr = (char *) tree.GetPrevious()) != NULL)
  203.       cout << "GetPrevious(): " << strptr << "\n";
  204.  
  205.     while ((strptr = (char *) tree++) != NULL)
  206.       cout << "tree++: " << strptr << "\n";
  207.  
  208.     while ((strptr = (char *) tree--) != NULL)
  209.       cout << "tree--: " << strptr << "\n";
  210.  
  211.     strptr = (char *) tree.GetFirst();
  212.     while ((strptr = (char *) tree.GetGreater(strptr)) != NULL)
  213.       cout << "GetGreater(): " << strptr << "\n";
  214.  
  215.     strptr = (char *) tree.GetLast();
  216.     while ((strptr = (char *) tree.GetLess(strptr)) != NULL)
  217.       cout << "GetLess(): " << strptr << "\n";
  218.  
  219.     cout << "GetLess(): " << (char *) tree.GetLess("Item01") << "\n";
  220.     while ((strptr = (char *) tree--) != NULL)
  221.       cout << "tree--: " << strptr << "\n";
  222.  
  223.     cout << "GetGreater(): " << (char *) tree.GetGreater("Item01") << "\n";
  224.     while ((strptr = (char *) tree++) != NULL)
  225.       cout << "tree++: " << strptr << "\n";
  226.  
  227.     cout << "GetEqual(): " << (char *) tree.GetEqual("Item00") << "\n";
  228.     cout << "GetEqual(): " << (char *) tree.GetEqual("Item01") << "\n";
  229.     cout << "GetEqual(): " << (char *) tree.GetEqual("Item02") << "\n";
  230.     cout << "GetEqual(): " << (char *) tree.GetEqual("Item03") << "\n";
  231.     cout << "GetEqual(): " << (char *) tree.GetEqual("Item04") << "\n";
  232.     cout << "GetEqual(): " << (char *) tree.GetEqual("Item05") << "\n";
  233.     cout << "GetEqual(): " << (char *) tree.GetEqual("Item06") << "\n";
  234.     cout << "GetEqual(): " << (char *) tree.GetEqual("Item07") << "\n";
  235.     cout << "GetEqual(): " << (char *) tree.GetEqual("Item08") << "\n";
  236.     cout << "GetEqual(): " << (char *) tree.GetEqual("Item09") << "\n";
  237.     cout << "GetEqual(): " << (char *) tree.GetEqual("Item10") << "\n";
  238.     cout << "GetEqual(): " << (char *) tree.GetEqual("Item11") << "\n";
  239.     cout << "GetEqual(): " << (char *) tree.GetEqual("Item12") << "\n";
  240.     cout << "GetEqual(): " << (char *) tree.GetEqual("Item13") << "\n";
  241.     cout << "GetEqual(): " << (char *) tree.GetEqual("Item14") << "\n";
  242.     cout << "GetEqual(): " << (char *) tree.GetEqual("Item15") << "\n";
  243.     cout << "GetEqual(): " << (char *) tree.GetEqual("Item16") << "\n";
  244.     cout << "GetEqual(): " << (char *) tree.GetEqual("Item17") << "\n";
  245.     cout << "GetEqual(): " << (char *) tree.GetEqual("Item18") << "\n";
  246.     cout << "GetEqual(): " << (char *) tree.GetEqual("Item19") << "\n";
  247.     cout << "GetEqual(): " << (char *) tree.GetEqual("Item20") << "\n";
  248.     cout << "GetEqual(): " << (char *) tree.GetEqual("Item21"