Advertisement
Guest User

Untitled

a guest
May 27th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.93 KB | None | 0 0
  1. UNIT TreeStorage;        
  2. INTERFACE
  3.      
  4.   {PROCEDURE InsertInTree(VAR Ptr: NodePtr; Str: LexemType);
  5.   PROCEDURE PrintTree(Ptr: NodePtr;  VAR F: TEXT);
  6.   PROCEDURE DeleteTree(Ptr: NodePtr);  }
  7.    
  8. IMPLEMENTATION
  9.  
  10. USES
  11.   Types;
  12.  
  13. TYPE
  14.   NodePtr = ^NodeType;
  15.   NodeType = RECORD
  16.                Key: LexemType;
  17.                Left, Right: NodePtr;
  18.                Count: INTEGER
  19.              END;  
  20.   VAR
  21.   Root: NodePtr;
  22.   CountLexem: INTEGER;
  23.  
  24.   PROCEDURE InsertInTree(VAR Ptr: NodePtr; Str: LexemType);
  25.   BEGIN {InsertInTree}
  26.     IF Ptr = NIL
  27.     THEN
  28.       BEGIN {Ñîçäàåì ëèñò ñî çíà÷åíèåì Str}
  29.         NEW(Ptr);
  30.         Ptr^.Key := Str;
  31.         Ptr^.Left := NIL;
  32.         Ptr^.Right := NIL;
  33.         Ptr^.Count := 1;
  34.         INC(CountLexem)
  35.       END
  36.     ELSE
  37.       IF Ptr^.Key > Str
  38.       THEN
  39.         InsertInTree(Ptr^.Left, Str)
  40.       ELSE
  41.         IF Ptr^.Key < Str
  42.         THEN
  43.           InsertInTree(Ptr^.Right, Str)
  44.         ELSE
  45.           INC(Ptr^.Count)
  46.   END;  {InsertInTree}
  47.  
  48.   PROCEDURE PrintTree(Ptr: NodePtr;  VAR F: TEXT);  
  49.   BEGIN {PrintTree}
  50.     IF Ptr <> NIL
  51.     THEN  {Ïå÷àòàåò ïîääåðåâî ñëåâà, âåðøèíó, ïîääåðåâî ñïðàâà}
  52.       BEGIN
  53.         PrintTree(Ptr^.Left, F);
  54.         WRITELN(Ptr^.Key, ' ', Ptr^.Count);
  55.         PrintTree(Ptr^.Right, F)
  56.       END
  57.   END;  {PrintTree}
  58.  
  59.   {PROCEDURE PrintOutFile(VAR OutFile: TEXT);  
  60.   BEGIN {PrintOutFile}
  61.     {PrintTree(Root, OutFile)
  62.   END;  {PrintOutFile}
  63.  
  64.   PROCEDURE DeleteTree(Ptr: NodePtr);  {î÷èñòêà ïàìÿòè}
  65.   BEGIN {DeleteTree}
  66.     IF Ptr <> NIL
  67.     THEN  {Óäàëÿåò ïîääåðåâî ñëåâà, âåðøèíó, ïîääåðåâî ñïðàâà}
  68.       BEGIN
  69.         DeleteTree(Ptr^.Left);
  70.         DeleteTree(Ptr^.Right);
  71.         DISPOSE(Ptr)
  72.       END
  73.   END;  {DeleteTree}
  74.  
  75. BEGIN
  76.   Root := 0;
  77.   CountLexem := 0
  78. END. {UNIT TreeStorage}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement