Skip to content

Latest commit

ย 

History

History
65 lines (54 loc) ยท 1.64 KB

File metadata and controls

65 lines (54 loc) ยท 1.64 KB

Queue(Array)

๋’ค๋กœ ๊ฐ€๊ธฐ

exercise 00

  • allowed functions : malloc, free
  • array๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ queue์„ ๊ตฌํ˜„ ํ•ฉ๋‹ˆ๋‹ค.
  • ์•„๋ž˜์™€ ๊ฐ™์€ queue.h๋ฅผ ์‚ฌ์šฉ ํ•ฉ๋‹ˆ๋‹ค.
     typedef struct	s_queue
     {
     	unsigned int	max_size;
     	int		last_index;
     	void		**data;
     }		t_queue;
    

queue_init

  • t_queueํ˜• struct๋ฅผ ๋ฐ˜ํ™˜ ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.
  • ๋ฐ˜ํ™˜๋˜๋Š” t_queue๋Š” ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ์ดˆ๊ธฐํ™”๋ฅผ ๊ฑฐ์ณ์•ผํ•ฉ๋‹ˆ๋‹ค.
     t_queue *queue_init(unsigned int max_size);
    

queue_size

  • queue์— ์žˆ๋Š” ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.
     int queue_size(t_queue *queue);
    

queue_push

  • queue์˜ ๊ฐ€์žฅ ๋’ค์— data๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.
  • ์„ฑ๊ณตํ•˜๋ฉด 1, ์‹คํŒจํ•˜๋ฉด 0์„ ๋ฐ˜ํ™˜ ํ•ฉ๋‹ˆ๋‹ค.
     int queue_push(t_queue *queue, void *data);
    

queue_front

  • queue์—์„œ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” data๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.
     void *queue_front(t_queue *queue);
    

queue_pop

  • queue์—์„œ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” data๋ฅผ ๊บผ๋‚ด๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.
     void *queue_pop(t_queue *queue);
    

queue_clear

  • queue์˜ data ์ „์ฒด๋ฅผ ์‚ญ์ œํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.
  • data๋Š” free_data๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ํ•ด์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
     void queue_clear(t_queue *queue, void (*free_data)(void *));
    

free_queue

  • queue์— ์žˆ๋Š” data ์ „์ฒด๋ฅผ ์‚ญ์ œํ•˜๊ณ  queue์˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ํ•ด์ œํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.
  • ์š”์†Œ์˜ ๋ฐ์ดํ„ฐ๋Š” free_data๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ํ•ด์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
     void free_queue(t_queue *queue, void (*free_data)(void *));
    

๋’ค๋กœ ๊ฐ€๊ธฐ