|
|
1.1 ! root 1: #ifndef lint ! 2: static char sccsid[] = "@(#)0.list.c 4.1 (Berkeley) 2/11/83"; ! 3: #endif not lint ! 4: ! 5: #include <stdio.h> ! 6: #include "def.h" ! 7: ! 8: struct list *consls(v,ls) /* make list */ ! 9: VERT v; ! 10: struct list *ls; ! 11: { ! 12: struct list *temp; ! 13: temp = challoc(sizeof(*temp)); ! 14: temp->elt = v; ! 15: temp->nxtlist = ls; ! 16: return(temp); ! 17: } ! 18: ! 19: struct list *append(v,ls) /* return ls . v */ ! 20: VERT v; ! 21: struct list *ls; ! 22: { ! 23: struct list *temp; ! 24: if (!ls) return(consls(v,0)); ! 25: for (temp = ls; temp -> nxtlist; temp = temp->nxtlist) ! 26: ; ! 27: temp->nxtlist = consls(v,0); ! 28: return(ls); ! 29: } ! 30: ! 31: ! 32: freelst(ls) ! 33: struct list *ls; ! 34: { ! 35: if (!ls) return; ! 36: if (ls->nxtlist) ! 37: freelst(ls->nxtlist); ! 38: chfree(ls,sizeof(*ls)); ! 39: } ! 40: ! 41: ! 42: oneelt(ls) /* return w if w is only elt of ls, UNDEFINED otherwise */ ! 43: struct list *ls; ! 44: { ! 45: if (!ls) return(UNDEFINED); ! 46: if (ls->nxtlist) return(UNDEFINED); ! 47: return(ls->elt); ! 48: } ! 49: ! 50: ! 51: lslen(ls) /* return number of elements in list ls */ ! 52: struct list *ls; ! 53: { ! 54: int count; ! 55: struct list *lp; ! 56: count = 0; ! 57: for (lp = ls; lp; lp = lp->nxtlist) ! 58: ++count; ! 59: return(count); ! 60: } ! 61: ! 62: ! 63: prlst(ls) ! 64: struct list *ls; ! 65: { ! 66: struct list *lp; ! 67: for (lp = ls; lp; lp = lp->nxtlist) ! 68: printf("%d,",lp->elt); ! 69: fprintf(stderr,"\n"); ! 70: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.