Lst_AtEnd (l, (ClientData)s); Lst_AtEnd(s->ref, (ClientData) l);
Lst_AtEnd(l, s); Lst_AtEnd(s->ref, l);
SuffInsert (l, s)    Lst           l;		/* the list where in s should be inserted */    Suff          *s;		/* the suffix to insert */{    LstNode 	  ln;		/* current element in l we're examining */    Suff          *s2 = NULL;	/* the suffix descriptor in this element */    if (Lst_Open (l) == FAILURE) {	return;    }    while ((ln = Lst_Next (l)) != NULL) {	s2 = (Suff *) Lst_Datum (ln);	if (s2->sNum >= s->sNum) {	    break;	}    }    Lst_Close (l);    if (DEBUG(SUFF)) {	printf("inserting %s(%d)...", s->name, s->sNum);    }    if (ln == NULL) {	if (DEBUG(SUFF)) {	    printf("at end of list\n");	}	Lst_AtEnd (l, (ClientData)s);	Lst_AtEnd(s->ref, (ClientData) l);    } else if (s2->sNum != s->sNum) {	if (DEBUG(SUFF)) {	    printf("before %s(%d)\n", s2->name, s2->sNum);	}	Lst_Insert(l, ln, (ClientData)s);	Lst_AtEnd(s->ref, (ClientData) l);    } else if (DEBUG(SUFF)) {	printf("already there\n");    }}