#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