void insert( key, r )
typekey key; dataarray r;
{ extern int n, nextfree;
int i;
i = hashfunction( key );
if ( empty(r[i]) ) {
r[i].k = key;
r[i].next = (-1);
n++;
}
else { /*** Find end of chain ***/
while ( r[i].next!=(-1) && r[i].k!=key ) i = r[i].next;
if ( r[i].k==key ) Error /*** key already in table ***/;
else {
/*** Find next free location ***/
while ( !empty(r[nextfree]) && nextfree>=0 ) nextfree--;
if ( nextfree<0 ) Error /*** Table is full ***/;
else {
r[i].next = nextfree;
r[nextfree].k = key;
r[nextfree].next = (-1);
n++;
}
}
}
}
|