Dynamic Allocation Example
struct ll {
struct ll * next;
void * data;
};
static struct ll * first, ** last = &first;
int add_ll_element(void * new_data)
{
struct ll * new_member;
if (NULL == (new_member = malloc(sizeof(struct ll)))) {
return(-1);
}
*last = new_member;
last = &new_member->next;
new_member->next = NULL;
new_member->data = new_data;
return(0);
}
struct data * remove_ll_element()
{
void * data;
struct ll * old_member;
if ((old_member = first)) {
if (NULL == first = first->next)) {
last = &first;
}
data = old_member->data;
free(old_member);
}
return(NULL);
}
next slide