From 0733ff24c89c8208b7e5d2789d0913d435b9e0fa Mon Sep 17 00:00:00 2001 From: scratko Date: Fri, 2 Aug 2024 15:55:08 +0300 Subject: Initial commit --- card_queue.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 card_queue.c (limited to 'card_queue.c') diff --git a/card_queue.c b/card_queue.c new file mode 100644 index 0000000..ec42b3b --- /dev/null +++ b/card_queue.c @@ -0,0 +1,60 @@ +#include "card_queue.h" + +#include + +void init_queue(struct card_queue *cq) +{ + cq->first = NULL; + cq->last = NULL; +} + +void push_queue(struct card_queue *cq, const char *str) +{ + struct card_queue_item *tmp = malloc(sizeof(struct card_queue_item)); + tmp->str = str; + tmp->next = NULL; + if(!cq->first) { + cd->first = tmp; + cd->last = tmp; + } else { + cd->last->next = tmp; + cd->last = tmp; + } +} + +struct card_queue_item* get_next_card_from_queue(struct card_queue *cq, + struct card_queue_item *prev) +{ + if(prev == NULL) + return cq->first; + else + return prev->next; +} + +int is_empty_queue(struct card_queue *cq) +{ + return !cq->first; +} + +const char* pop_card_queue(struct card_queue *cq) +{ + struct card_queue_item *tmp = NULL; + const char *card = NULL; + + tmp = cq->first; + cq->first = cq->first->next; + card = tmp->str; + free(tmp); + return card; +} + +int find_out_card_quantity_in_cq(const struct card_queue *cq) +{ + int counter = 0; + + while(cq) { + ++counter; + cq = cq->next; + } + return counter; +} -- cgit v1.2.3