rem: register SLNode p,q;
add: register SLNode p,q = 0;
context: int InsertSL(SkipList l, void *key){  register int i,k;  SLNode update[MaxNumberOfLevels];  register SLNode p,q;  int (*compare)() = l->compare;  p = l->header;    for(k = l->level-1; k >= 0; k--)   {     while((q = p->forward[k]) && (*compare)(q->key, key) < 0)    p = q;     update[k] = p;   }  if ((l->flags & ALLOW_DUPLICATES) == FALSE) /* if no duplicates allowed */   if (q && (*compare)(q->key, key) == 0)     /* item is a duplicate */     {       return DUPLICATE_ITEM;     }  k = RandomLevelSL(l);  if (k >= l->level)    {      k = l->level;      l->level++;      update[k] = l->header;    }  q = NewNodeOfLevel(k);  /* was k+1 */  if (q == NULL)    return FALSE;  l->count++;             /* update the number of nodes in the list */    q->key = key;  for(i=0; i < k; i++)    q->forward[i] = NULL;  for(; k >= 0; k--)    {      p = update[k];      q->forward[k] = p->forward[k];      p->forward[k] = q;    }  return TRUE;}