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 (n: Node) Add(VAR datakey: Data);
  2.    
  3.         VAR
  4.             temp: Data;
  5.            
  6.     BEGIN
  7.         NEW(n^.data2);
  8.         Out.String("Entering Add");
  9.         NEW(temp);
  10.         IF (datakey^.value > n^.data1^.value) THEN
  11.             Out.String("Casus 1"); Out.Ln();
  12.             IF (n^.data2 = NIL) THEN
  13.                 NEW(n^.data2);
  14.                 n^.data2^.value := datakey^.value; Out.Int(1,0);
  15.             ELSIF (n^.data2 # NIL) THEN
  16.                 IF ((datakey^.value > n^.data1^.value) & (n^.data2^.value > datakey^.value)) THEN
  17.                     IF ((n^.middle = NIL) & (n^.IsFull())) THEN
  18.                         NEW(n^.overflowdata);
  19.                         n^.overflowdata^.value := n^.data2^.value;
  20.                         n^.data2^.value := datakey^.value;
  21.                         Out.String("Splitting");
  22.                         Out.Ln();
  23.                         Split(n);
  24.                     ELSIF (n^.middle # NIL) THEN
  25.                         n^.middle^.Add(datakey); Out.Int(2,0);
  26.                     END;
  27.                 END;       
  28.             ELSE
  29.                 Out.String("Hier zou ik nooit moeten komen. #1");
  30.                 Out.Ln();
  31.             END;
  32.         ELSIF (n^.data2 # NIL) THEN
  33.                 IF (datakey^.value > n^.data2^.value) THEN
  34.                     Out.String("Casus 2"); Out.Ln();
  35.                     IF (n^.right # NIL) THEN
  36.                         n^.right^.Add(datakey); Out.Int(3,0);
  37.                     ELSIF ((n^.right = NIL) & (n^.IsFull())) THEN
  38.                         NEW(n^.overflowdata);
  39.                         n^.overflowdata^.value := datakey^.value;
  40.                         Out.String("Splitting.");
  41.                         Out.Ln();
  42.                         Split(n);
  43.                     ELSE
  44.                         Out.String("Hier zou ik nooit moeten komen. #2");
  45.                         Out.Ln();
  46.                     END;
  47.                 END;
  48. ELSIF (datakey^.value < n^.data1^.value) THEN
  49.             Out.String("Casus 3"); Out.Ln();
  50.             IF (n^.data2 = NIL) THEN
  51.                 NEW(n^.data2);
  52.                 temp^.value := n^.data1^.value;
  53.                 n^.data1^.value := datakey^.value;
  54.                 n^.data2^.value := temp^.value; Out.Int(4,0);
  55.             ELSIF ((n^.IsFull()) & (n^.left # NIL)) THEN
  56.                 n^.left^.Add(datakey);Out.Int(5,0);
  57.             ELSIF ((n^.IsFull()) & (n^.left = NIL)) THEN
  58.                 NEW(n^.overflowdata);
  59.                 n^.overflowdata^.value := n^.data2^.value;
  60.                 n^.data2^.value := n^.data1^.value;
  61.                 n^.data1^.value := datakey^.value;
  62.                 Out.String("Splitting.");
  63.                 Out.Ln();
  64.                 Split(n);
  65.             ELSE
  66.                 Out.String("Hier zou ik nooit moeten komen. #3");
  67.                 Out.Ln();
  68.             END;
  69.         ELSE
  70.             Out.String("Ik heb dit helemaal fout gedaan.");
  71.             Out.Ln();
  72.         END;
  73.     END Add;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement