diff options
Diffstat (limited to 'queue.c')
-rw-r--r-- | queue.c | 44 |
1 files changed, 44 insertions, 0 deletions
@@ -0,0 +1,44 @@ +#include "queue.h" +#include <stdlib.h> + +void queue_init(struct queue *q) +{ + q->first = NULL; + q->last = NULL; +} + +void queue_push(struct queue *q, char *word) +{ + struct word_item *tmp = malloc(sizeof(struct word_item)); + tmp->word = word; + tmp->next = NULL; + if(!q->first) { + q->first = tmp; + q->last = q->first; + } else { + q->last->next = tmp; + q->last = q->last->next; + } +} + +void queue_clear(struct queue *q) +{ + struct word_item *tmp; + while(q->first) { + tmp = q->first; + q->first = q->first->next; + free(tmp->word); + free(tmp); + } + q->last = NULL; +} + +void queue_processing(const struct queue *q, void (*callback)(char*)) +{ + struct word_item *tmp; + tmp = q->first; + while(tmp) { + callback(tmp->word); + tmp = tmp->next; + } +} |