Advertisement
Guest User

Untitled

a guest
Aug 13th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     PROCEDURE Split(VAR n: Node);
  2.    
  3.         VAR
  4.             p: Node;
  5.             n1, n2: Node;
  6.            
  7.     BEGIN
  8.         Out.String("Entering Split");
  9.         Out.Ln();
  10.         NEW(p);
  11.         NEW(n1);
  12.         NEW(n2);
  13.         NEW(n1^.data1);
  14.         NEW(n2^.data1);
  15.         NEW(n1^.data2);
  16.         NEW(n2^.data2);
  17.         NEW(n1^.overflowdata);
  18.         NEW(n2^.overflowdata);
  19. (*      NEW(p^.data1);
  20.         NEW(p^.data2);
  21.         NEW(p^.overflowdata); *)
  22.  
  23.         IF (n^.parent = NIL) THEN
  24.             NEW(p);
  25.         ELSE
  26.             p := n^.parent;
  27.         END;
  28.         Out.String("KO");
  29.         n1^.data1 := n^.data1;
  30.         Out.String("KON");
  31.         n2^.data1 := n^.overflowdata;
  32.         Out.String("Tyfus");
  33.         IF (p^.data2 = NIL) THEN
  34.             Out.String("Geil");
  35.             IF n^.data2^.value > p^.data1^.value THEN
  36.                 Out.String("ALpha");
  37.                 p^.data2 := n^.data2;
  38.             ELSE
  39.                 Out.String("Beta");
  40.                 p^.data2 := p^.data1;
  41.                 p^.data1 := n^.data2;
  42.             END;
  43.         ELSIF ((p^.data2 # NIL) & (p^.overflowdata = NIL)) THEN
  44.             Out.String("Gamma");
  45.             IF n^.data2^.value > p^.data2^.value THEN
  46.                 Out.String("Delta");
  47.                 p^.overflowdata := n^.data2;
  48.             ELSIF ((n^.data2^.value < p^.data2^.value) & (n^.data2^.value > p^.data1.value)) THEN
  49.                 Out.String("Epsilon");
  50.                 p^.overflowdata := p^.data2;
  51.                 p^.data2 := n^.data2;
  52.             ELSIF (n^.data2^.value < p^.data1^.value) THEN
  53.                 Out.String("theta");
  54.                 p^.overflowdata := p^.data2;
  55.                 p^.data2 := p^.data1;
  56.                 p^.data1 := n^.data2;
  57.             END;
  58.         END;
  59. IF ((n^.parent # NIL) & ((n^.left # NIL) OR (n^.right # NIL) OR (n^.middle # NIL))) THEN
  60.             n^.left^.parent := n1;
  61.             n^.temp^.parent := n1;
  62.             n^.middle^.parent := n2;
  63.             n^.right^.parent := n2;
  64.         END;
  65.        
  66.         IF (p^.IsTotallyFull()) THEN
  67.             Split(p);
  68.         END;
  69.            
  70.        
  71.     END Split;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement