|
|
1.1 ! root 1: #include "../h/rt.h" ! 2: #ifdef SETS ! 3: /* ! 4: * memb - sets res flag to 1 if x is a member of set S, ! 5: * sets res flag to 0 if not. ! 6: * Returns pointer to the descriptor which points to ! 7: * the element (or which would point to it if it were ! 8: * there). ! 9: */ ! 10: ! 11: struct descrip *memb(ps,x,hn,res) ! 12: int *res; /* pointer to integer result flag */ ! 13: struct b_set *ps; ! 14: struct descrip *x; ! 15: int hn; ! 16: { ! 17: register struct descrip *lp; ! 18: register struct b_selem *pe; ! 19: extern int equiv(); ! 20: ! 21: lp = &(ps->sbucks[hn % NBUCKETS]); ! 22: /* ! 23: * Look for x in the hash chain. ! 24: */ ! 25: *res = 0; ! 26: while (BLKLOC(*lp) != NULL) { ! 27: pe = (struct b_selem *) BLKLOC(*lp); ! 28: if ( pe->hnum > hn) /* too far - it isn't there */ ! 29: return (lp); ! 30: else if (( pe->hnum == hn ) && ( equiv(&pe->setmem, x ))) { ! 31: *res = 1; ! 32: return (lp); ! 33: } ! 34: /* ! 35: * We haven't reached the right hashnumber yet or ! 36: * the element isn't the right one so keep looking. ! 37: */ ! 38: lp = &(pe->sblink); ! 39: } ! 40: /* ! 41: * At end of chain - not there. ! 42: */ ! 43: return (lp); ! 44: } ! 45: #else SETS ! 46: char junk; /* prevent null object file */ ! 47: #endif SETS
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.