+ 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
+ leaf=newleaf;
+ if(prev)
+ {
+ leaf->__next=prev->__next->__next;
+ prev->__next=leaf;
+ }
+ else
+ leaf->__next=root;
+
+ //reindex B+ tree
+ for(leaf=root;leaf->__next;leaf=leaf->__next)
+ {
+ //auto seek
+ if(!leaf->__seek)
+ 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;
+ odd=1-odd;
+ }
+ else
+ {
+ leaf->__seek=leaf->__next->__seek;
+ leaf->__next->__seek=NULL;
+ }
+ }
+ }