#define ListA_BULK_SIZE 64 ListA_tp freelist_ListA = NULL; ListA_tp new_ListA_many() { int i; ListA_tp head = (ListA_tp)malloc(sizeof(ListA_t) * ListA_BULK_SIZE); if(head == NULL) { printf("Memory Exhausted!!\n"); exit(1); } for(i = 0; i < ListA_BULK_SIZE-1; i++) { (head + i)->next = head + (i + 1); } (head + (ListA_BULK_SIZE-1))->next = NULL; return head; } ListA_tp newF_ListA() { ListA_tp result; if(freelist_ListA == NULL) { freelist_ListA = new_ListA_many(); } result = freelist_ListA; freelist_ListA = result->next; return result; } void freeF_ListA(ListA_tp target) { target->next = freelist_ListA; freelist_ListA = target; }
2001.11.20/ Tomio KAMADA: kamada@cs.kobe-u.ac.jp