home *** CD-ROM | disk | FTP | other *** search
/ Global Amiga Experience / globalamigaexperience.iso / compressed / development / clusterdemo.dms / clusterdemo.adf / Modules.lha / modules / txt / AVLTrees.def < prev    next >
Text File  |  1994-05-25  |  3KB  |  108 lines

  1. |##########|
  2. |#MAGIC   #|CLABLNLH
  3. |#PROJECT #|"ImportHelp"
  4. |#PATHS   #|"StdProject"
  5. |#FLAGS   #|xx-x-x--x---xxx--x--------------
  6. |#USERSW  #|--------------------------------
  7. |#USERMASK#|--------------------------------
  8. |#SWITCHES#|x----xxxxx------
  9. |##########|
  10. DEFINITION MODULE AVLTrees;
  11.  
  12. FROM System IMPORT Equation;
  13.  
  14.   DEFINITION MODULE AVLTrees(AVLNodePtr : POINTER TO AVLNode);
  15.  
  16.     TYPE
  17.       AVLNode    = RECORD
  18.                      left,
  19.                      right,
  20.                      parent : AVLNodePtr;
  21.                      a_fact : INTEGER;
  22.                    END;
  23.  
  24.       Comparison = PROCEDURE(a,b : AVLNodePtr):Equation;
  25.  
  26.       AVLTree    = RECORD
  27.                      root    : AVLNodePtr;
  28.                      compare : Comparison;
  29.                    END;
  30.  
  31.     EXCEPTION
  32.       AllreadyExists : "Allready exists";
  33.       NotFound       : "Not found";
  34.       TreeEmpty      : "Tree is empty";
  35.  
  36.     PROCEDURE Init(VAR t : AVLTree;compare : Comparison);
  37.  
  38.     PROCEDURE Insert(VAR t : AVLTree;data : AVLNodePtr);
  39.  
  40.     PROCEDURE Search(REF t : AVLTree;data : AVLNodePtr):AVLNodePtr;
  41.  
  42.     PROCEDURE Delete(VAR t : AVLTree;VAR data : AVLNodePtr);
  43.  
  44.     PROCEDURE Remove(VAR t : AVLTree;data : AVLNodePtr);
  45.  
  46.     PROCEDURE Next(REF t : AVLTree;data : AVLNodePtr):AVLNodePtr;
  47.  
  48.     PROCEDURE Prev(REF t : AVLTree;data : AVLNodePtr):AVLNodePtr;
  49.  
  50.     PROCEDURE First(REF t : AVLTree):AVLNodePtr;
  51.  
  52.     PROCEDURE Last(REF t : AVLTree):AVLNodePtr;
  53.  
  54.   END AVLTrees;
  55.  
  56.   DEFINITION MODULE AVLCursorTrees(type : ANYPTR);
  57.  
  58.     TYPE
  59.       CNodePtr   = POINTER TO CNode;
  60.  
  61.     DEFINITION MODULE CTree = AVLTrees(CNodePtr);
  62.  
  63.     TYPE
  64.       CNode      = RECORD OF CTree.AVLNode
  65.                      data : type;
  66.                    END;
  67.  
  68.       Comparison = PROCEDURE(a,b : type):Equation;
  69.       Destructor = PROCEDURE(VAR a : type);
  70.  
  71.       AVLTree    = RECORD OF CTree.AVLTree
  72.                      cursor   : CNodePtr;
  73.                      greater2 : Comparison;
  74.                    END;
  75.  
  76.     FROM CTree IMPORT AllreadyExists,NotFound;
  77.  
  78.     PROCEDURE Init(VAR t : AVLTree;compare : Comparison);
  79.  
  80.     PROCEDURE Insert(VAR t : AVLTree;data : type);
  81.  
  82.     PROCEDURE Search(VAR t : AVLTree;data : type);
  83.  
  84.     PROCEDURE Get(VAR t : AVLTree):type;
  85.  
  86.     PROCEDURE Delete(VAR t : AVLTree);
  87.  
  88.     PROCEDURE Remove(VAR t : AVLTree);
  89.  
  90.     PROCEDURE Destruct(VAR t : AVLTree;destructor : Destructor);
  91.  
  92.     PROCEDURE Delete_All(VAR t : AVLTree);
  93.  
  94.     PROCEDURE Destruct_All(VAR t : AVLTree;destructor : Destructor);
  95.  
  96.     PROCEDURE Next(VAR t : AVLTree);
  97.  
  98.     PROCEDURE Prev(VAR t : AVLTree);
  99.  
  100.     PROCEDURE First(VAR t : AVLTree);
  101.  
  102.     PROCEDURE Last(VAR t : AVLTree);
  103.  
  104.   END AVLCursorTrees;
  105.  
  106. END AVLTrees.
  107.  
  108.