#include "m.h" #define BLOCK 100 /* number of elements to allocate at one time */ static Symbolptr head = NULL; Symbolptr new( void) { Symbolptr p; int j; if( head == NULL) { if( (head = (Symbolptr) malloc(BLOCK*sizeof(Symbol))) == NULL) return NULL; else { for( p = head, j = 1; j < BLOCK; ++p, ++j) p->next = p+1; p->next = NULL; } } p = head; head = head->next; return p; } void dispose( Symbolptr p) { p->next = head; head = p; }