+++ /dev/null
-#include "cll1.h"
-
-def_mem(Leaf)
-{
- int seq;
- array(Leaf);
-};
-
-program
-{
- Leaf leaf,root=NULL;
- int newkey;
- int seq=0;
- int odd=1;
-
- 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=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)
- {
- //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("");
- }
-}