Skip to content

Latest commit

ย 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
ย 
ย 
ย 
ย 
ย 
ย 

README.md

Queue(Linked List)

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

exercise 00

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

queue_init

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

create_elem

  • t_nodeํ˜• ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.
     t_node *create_elem(void *data);
    

queue_push

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

queue_size

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

queue_front

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

queue_pop

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

queue_clear

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

free_queue

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

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