some work (do not compile)
[svn/Cll1h/.git] / demos / trees.c
index d08bc15acbc1e2720e192ac381efd1e3f3bb7ba6..44c9ad5903c6eda277c02ad921ffa69dbea5bf16 100644 (file)
@@ -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;
+    }
   }
- }
+ } 
 }
This page took 0.130209 seconds and 4 git commands to generate.