- allowed functions : malloc, free
- array๋ฅผ ์ฌ์ฉํ์ฌ queue์ ๊ตฌํ ํฉ๋๋ค.
- ์๋์ ๊ฐ์ queue.h๋ฅผ ์ฌ์ฉ ํฉ๋๋ค.
typedef struct s_queue { unsigned int max_size; int last_index; void **data; } t_queue;
- t_queueํ struct๋ฅผ ๋ฐํ ํ๋ ํจ์๋ฅผ ์์ฑํ์ธ์.
- ๋ฐํ๋๋ t_queue๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น๊ณผ ์ด๊ธฐํ๋ฅผ ๊ฑฐ์ณ์ผํฉ๋๋ค.
t_queue *queue_init(unsigned int max_size);
- queue์ ์๋ ์์์ ๊ฐ์๋ฅผ ๋ฐํํ๋ ํจ์๋ฅผ ์์ฑํ์ธ์.
int queue_size(t_queue *queue);
- queue์ ๊ฐ์ฅ ๋ค์ data๋ฅผ ์ถ๊ฐํ๋ ํจ์๋ฅผ ์์ฑํ์ธ์.
- ์ฑ๊ณตํ๋ฉด 1, ์คํจํ๋ฉด 0์ ๋ฐํ ํฉ๋๋ค.
int queue_push(t_queue *queue, void *data);
- queue์์ ๊ฐ์ฅ ์์ ์๋ data๋ฅผ ๋ฐํํ๋ ํจ์๋ฅผ ์์ฑํ์ธ์.
void *queue_front(t_queue *queue);
- queue์์ ๊ฐ์ฅ ์์ ์๋ data๋ฅผ ๊บผ๋ด๋ ํจ์๋ฅผ ์์ฑํ์ธ์.
void *queue_pop(t_queue *queue);
- queue์ data ์ ์ฒด๋ฅผ ์ญ์ ํ๋ ํจ์๋ฅผ ์์ฑํ์ธ์.
- data๋ free_data๋ฅผ ์ฌ์ฉํด์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ํด์ ํด์ผ ํฉ๋๋ค.
void queue_clear(t_queue *queue, void (*free_data)(void *));
- queue์ ์๋ data ์ ์ฒด๋ฅผ ์ญ์ ํ๊ณ queue์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ํด์ ํ๋ ํจ์๋ฅผ ์์ฑํ์ธ์.
- ์์์ ๋ฐ์ดํฐ๋ free_data๋ฅผ ์ฌ์ฉํด์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ํด์ ํด์ผ ํฉ๋๋ค.
void free_queue(t_queue *queue, void (*free_data)(void *));