dff0ddafdeea0213c17f41f1ed2a0e3b4c2f500b
[svn/Cll1h/.git] / demos / trees.c
1 #include "cll1.h"
2
3 def_mem(Leaf)
4 {
5 int value;
6 array(Leaf);
7 };
8
9 program
10 {
11 Leaf leaf,root=NULL;
12 int newkey;
13
14 for_ints(newkey, 8,1,-2,745,-32,-64,27,4 ) printf(" [%d]",i)
15 {
16 leaf=get_mem(Leaf);
17
18 //init
19 leaf->__next=NULL;
20 leaf->__seek=NULL;
21 leaf->__key=newkey;
22
23 //grow tree
24 {
25 void *prev=NULL, *newleaf=leaf;
26 //find where to store
27 for(leaf=root; leaf && leaf->__key<=newkey ; leaf=leaf->__next)
28 {
29 prev=leaf;
30 if(leaf->__seek && leaf->__seek->key<=newkey) leaf=leaf->__seek;
31 }
32 //store new node
33 leaf=newleaf;
34 if(prev)
35 {
36 leaf->__next=prev->__next->__next;
37 prev->__next=leaf;
38 }
39 else
40 leaf->__next=root;
41 //auto seek
42 if(leaf->__next->__next;)
43 leaf->__seek=leaf->__next->__next;
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 }
56 }
57 }
58 }
This page took 0.252594 seconds and 3 git commands to generate.