do not compile yet
[svn/Cll1h/.git] / demos / trees.c
CommitLineData
436ac5fb 1#include "cll1.h"
2
3def_mem(Leaf)
4{
5 int value;
6 array(Leaf);
7};
8
9program
10{
11 Leaf leaf,root=NULL;
93583418 12 int newkey;
436ac5fb 13
93583418 14 for_ints(newkey, 8,1,-2,745,-32,-64,27,4 ) printf(" [%d]",i)
436ac5fb 15 {
16 leaf=get_mem(Leaf);
17
18 //init
19 leaf->__next=NULL;
20 leaf->__seek=NULL;
93583418 21 leaf->__key=newkey;
436ac5fb 22
23 //grow tree
436ac5fb 24 {
3fa0c747 25 void *prev=NULL, *newleaf=leaf;
14e7e05a 26 //find where to store
3fa0c747 27 for(leaf=root; leaf && leaf->__key<=newkey ; leaf=leaf->__next)
a68153bf 28 {
3fa0c747 29 prev=leaf;
30 if(leaf->__seek && leaf->__seek->key<=newkey) leaf=leaf->__seek;
a68153bf 31 }
14e7e05a 32 //store new node
3fa0c747 33 leaf=newleaf;
a68153bf 34 if(prev)
35 {
3fa0c747 36 leaf->__next=prev->__next->__next;
37 prev->__next=leaf;
a68153bf 38 }
39 else
3fa0c747 40 leaf->__next=root;
41 //auto seek
42 if(leaf->__next->__next;)
43 leaf->__seek=leaf->__next->__next;
14e7e05a 44
45 //reindex B+ tree
46 for(leaf=root; leaf->__next ; leaf=leaf->__next)
47 {
48 if (leaf->__seek)
49 {
50 if (leaf->__key <= newkey)
51 leaf->__seek=leaf->__seek->__next;
52 }
53 else
54 leaf->__seek=leaf->__next->__seek;
55 }
a68153bf 56 }
cda3141a 57 }
436ac5fb 58}
This page took 0.19989 seconds and 4 git commands to generate.