#include struct _queue { void *data; struct _queue *next; }; typedef _queue queue; queue queue_allocate(void *value) { queue *node = malloc(sizeof(queue)); if (node) { node->data = val; node->next = NULL; } return node; } void queue_free(queue *node) { if (node) { free(node); } } void queue_append(queue **head, void *value) { if ((*head)->next == NULL) { (*head)-> = value; } else { queue *cur; for (cur = (*head)->next; cur->next != NULL; cur = cur->next); cur->next = item; } } void queue_pop(queue **head) { int value = (*head)->data; queue *tmp = (*head)->next; free(*head); head = tmp; } void queue_display(queue *head) { queue *cur; for (cur = head->next; cur->next != NULL; cur = cur->next) { fprintf(stdout, "%s\n", cur->data); } } void main(void) { queue *main; //... }