X-Git-Url: https://git.harvie.cz/?a=blobdiff_plain;f=demos%2Ftrees.c;h=44c9ad5903c6eda277c02ad921ffa69dbea5bf16;hb=14e7e05a2fb08966aa8039c31519caa5d4b08a93;hp=d08bc15acbc1e2720e192ac381efd1e3f3bb7ba6;hpb=436ac5fbbc41b28ca80c3011ff4495d9542603c7;p=svn%2FCll1h%2F.git diff --git a/demos/trees.c b/demos/trees.c index d08bc15..44c9ad5 100644 --- a/demos/trees.c +++ b/demos/trees.c @@ -9,23 +9,49 @@ def_mem(Leaf) program { Leaf leaf,root=NULL; + int newkey; - for_ints(i, 8,1,-2,745,-32,-64,27,4 ) printf(" [%d]",i) + for_ints(newkey, 8,1,-2,745,-32,-64,27,4 ) printf(" [%d]",i) { leaf=get_mem(Leaf); //init leaf->__next=NULL; leaf->__seek=NULL; - leaf->__key=i; + leaf->__key=newkey; //grow tree - for(leaf=root; leaf && leaf->__key >= i ; leaf=leaf->__next) { - if(leaf->__seek->key >=) + void *prev = NULL, *newleaf = leaf; + + //find where to store + for(leaf=root; leaf && leaf->__key <= newkey ; leaf=leaf->__next) + { + prev = leaf; + if(leaf->__seek && leaf->__seek->key <= newkey) leaf=leaf->__seek; + } + + //store new node + if(prev) + { + + } + else + { + + } + + //reindex B+ tree + for(leaf=root; leaf->__next ; leaf=leaf->__next) + { + if (leaf->__seek) + { + if (leaf->__key <= newkey) + leaf->__seek=leaf->__seek->__next; + } + else + leaf->__seek=leaf->__next->__seek; + } } - - - } - + } }