X-Git-Url: https://git.harvie.cz/?a=blobdiff_plain;f=demos%2Ftrees.c;h=44c9ad5903c6eda277c02ad921ffa69dbea5bf16;hb=14e7e05a2fb08966aa8039c31519caa5d4b08a93;hp=0b8966cf9365ca3c7a3ba00ddca404a29bf885e8;hpb=cda3141abee4c5151924b4cb3de9e3493193d8f4;p=svn%2FCll1h%2F.git diff --git a/demos/trees.c b/demos/trees.c index 0b8966c..44c9ad5 100644 --- a/demos/trees.c +++ b/demos/trees.c @@ -21,16 +21,37 @@ program leaf->__key=newkey; //grow tree - for(leaf=root; leaf && leaf->__key <= newkey ; leaf=leaf->__next) { - if(leaf->__seek->key <= newkey) - { - - } - else - { - - } - } + 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; + } + } } }