skalibs

Mirror/fork of https://skarnet.org/software/skalibs/
git clone https://ccx.te2000.cz/git/skalibs
Log | Files | Refs | README | LICENSE

avltreen_newnode.c (393B)


      1 /* ISC license. */
      2 
      3 #include <skalibs/genset.h>
      4 #include <skalibs/avlnode.h>
      5 #include <skalibs/avltreen.h>
      6 
      7 uint32_t avltreen_newnode (avltreen *t, uint32_t d)
      8 {
      9   uint32_t i = genset_new(&t->x) ;
     10   if (i < avltreen_totalsize(t))
     11   {
     12     avlnode *s = avltreen_nodes(t) ;
     13     s[i].data = d ;
     14     s[i].child[0] = s[i].child[1] = avltreen_totalsize(t) ;
     15     s[i].balance = 0 ;
     16   }
     17   return i ;
     18 }