def_mem(Leaf)
{
- int value;
+ int seq;
array(Leaf);
};
program
{
Leaf leaf,root=NULL;
+ int newkey;
+ int seq=0;
+ int odd=1;
- for_ints(i, 8,1,-2,745,-32,-64,27,4 ) printf(" [%d]",i)
+ print("Input values:");
+ for_ints(newkey, 8,1,-2,745,-32,-64,27,4,-300,0,300,40,-30,-40,400, 200 )
{
+ printf("%d. [%d]\n",seq,newkey);
+
leaf=get_mem(Leaf);
-
+ leaf->seq=seq++;
+
+ //store(leaf,root,newkey) is declared as:
+
//init
leaf->__next=NULL;
leaf->__seek=NULL;
- leaf->__key=i;
-
- //grow tree
- for(leaf=root; leaf && leaf->__key >= i ; leaf=leaf->__next)
+ leaf->__key=newkey;
+
+ //store new node without indexing, first
+ insert(leaf,root,order_by_num,__key);
+
+ //reindex B+ tree
+ for(leaf=root;leaf->__next;leaf=leaf->__next)
{
- if(leaf->__seek->key >=)
+ //auto seek
+ if(!leaf->__seek && leaf->__next)
+ leaf->__seek=leaf->__next->__next;
+
+ if(leaf->__key<=newkey)
+ {
+ if(leaf->__seek && leaf->__seek->__key>newkey) leaf->__seek=leaf->__seek->__next;
+ }
+ else
+ {
+ if(odd && leaf->__seek)
+ {
+ leaf->__seek==leaf->__seek->__next;
+ }
+ else
+ {
+ leaf->__seek=leaf->__next->__seek;
+ leaf->__next->__seek=NULL;
+ }
+ odd=1-odd;
+ }
}
-
-
}
+ print("Values were stored as:");
+ for_each(leaf,root)
+ {
+ printf("%d. [%d]",leaf->seq,leaf->__key);
+ if (leaf->__seek)
+ printf("-> %d. [%d]\n",leaf->__seek->seq,leaf->__seek->__key);
+ else
+ print("");
+ }
}