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++; } } } } |