From c1e5cffb43977f5a2f8d9623e40c01dab6d80c46 Mon Sep 17 00:00:00 2001 From: scratko Date: Tue, 23 Apr 2024 19:03:35 +0300 Subject: Shell-I release --- queue.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 queue.c (limited to 'queue.c') diff --git a/queue.c b/queue.c new file mode 100644 index 0000000..861f1e5 --- /dev/null +++ b/queue.c @@ -0,0 +1,44 @@ +#include "queue.h" +#include + +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; + } +} -- cgit v1.2.3