diff options
| author | scratko <m@scratko.xyz> | 2024-08-10 02:46:56 +0300 | 
|---|---|---|
| committer | scratko <m@scratko.xyz> | 2024-08-10 02:46:56 +0300 | 
| commit | a2d696dea797faaa3157046c8ae89cd70e965bff (patch) | |
| tree | 74051e828ec401f399b2316a535c200f3afa95c5 /server/card_queue.c | |
| parent | 9e9919b897b00ff23aee6581471b4d7b4567bf4a (diff) | |
| download | durak-a2d696dea797faaa3157046c8ae89cd70e965bff.tar.gz durak-a2d696dea797faaa3157046c8ae89cd70e965bff.tar.bz2 durak-a2d696dea797faaa3157046c8ae89cd70e965bff.zip  | |
Prefinal version
Added client.
Moved files to directories.
Diffstat (limited to 'server/card_queue.c')
| -rw-r--r-- | server/card_queue.c | 61 | 
1 files changed, 61 insertions, 0 deletions
diff --git a/server/card_queue.c b/server/card_queue.c new file mode 100644 index 0000000..194ea0c --- /dev/null +++ b/server/card_queue.c @@ -0,0 +1,61 @@ +#include "card_queue.h" + +#include <stdlib.h> + +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) { +        cq->first = tmp; +        cq->last = tmp; +    } else { +        cq->last->next = tmp; +        cq->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; +    struct card_queue_item *tmp = cq->first; + +    while(tmp) { +        ++counter; +        tmp = tmp->next; +    } +    return counter; +}  | 
