/* Header file for the list concrete data type */ typedef struct cell *list; struct cell { void *head; list tail; }; /* construct a new cell from an element that becomes the head of the new cell and a list that becomes the tail of the new cell */ extern list cons(void *element, list l); /* free the first cell on a list and return the tail of the list */ extern list tail_and_free(list l);