Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PROCEDURE Split(VAR n: Node);
- VAR
- p: Node;
- n1, n2: Node;
- BEGIN
- Out.String("Entering Split");
- Out.Ln();
- NEW(p);
- NEW(n1);
- NEW(n2);
- NEW(n1^.data1);
- NEW(n2^.data1);
- NEW(n1^.data2);
- NEW(n2^.data2);
- NEW(n1^.overflowdata);
- NEW(n2^.overflowdata);
- (* NEW(p^.data1);
- NEW(p^.data2);
- NEW(p^.overflowdata); *)
- IF (n^.parent = NIL) THEN
- NEW(p);
- ELSE
- p := n^.parent;
- END;
- Out.String("KO");
- n1^.data1 := n^.data1;
- Out.String("KON");
- n2^.data1 := n^.overflowdata;
- Out.String("Tyfus");
- IF (p^.data2 = NIL) THEN
- Out.String("Geil");
- IF n^.data2^.value > p^.data1^.value THEN
- Out.String("ALpha");
- p^.data2 := n^.data2;
- ELSE
- Out.String("Beta");
- p^.data2 := p^.data1;
- p^.data1 := n^.data2;
- END;
- ELSIF ((p^.data2 # NIL) & (p^.overflowdata = NIL)) THEN
- Out.String("Gamma");
- IF n^.data2^.value > p^.data2^.value THEN
- Out.String("Delta");
- p^.overflowdata := n^.data2;
- ELSIF ((n^.data2^.value < p^.data2^.value) & (n^.data2^.value > p^.data1.value)) THEN
- Out.String("Epsilon");
- p^.overflowdata := p^.data2;
- p^.data2 := n^.data2;
- ELSIF (n^.data2^.value < p^.data1^.value) THEN
- Out.String("theta");
- p^.overflowdata := p^.data2;
- p^.data2 := p^.data1;
- p^.data1 := n^.data2;
- END;
- END;
- IF ((n^.parent # NIL) & ((n^.left # NIL) OR (n^.right # NIL) OR (n^.middle # NIL))) THEN
- n^.left^.parent := n1;
- n^.temp^.parent := n1;
- n^.middle^.parent := n2;
- n^.right^.parent := n2;
- END;
- IF (p^.IsTotallyFull()) THEN
- Split(p);
- END;
- END Split;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement