Skip to content

Latest commit

ย 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
ย 
ย 
ย 
ย 
ย 
ย 

README.md

Stack(Linked List)

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

exercise 00

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

stack_init

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

create_elem

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

stack_push

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

stack_size

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

stack_peek

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

stack_pop

  • stack์—์„œ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ์š”์†Œ๋ฅผ ๊บผ๋‚ด๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.
  • ๋ฐ˜ํ™˜ํ•˜๋Š” ์š”์†Œ์˜ next๋ฅผ ๋„ํฌ์ธํ„ฐ๋กœ ๋ฐ”๊พผํ›„ ๋ฐ˜ํ™˜ ํ•ฉ๋‹ˆ๋‹ค.
     t_node *stack_pop(t_stack *stack);
    

stack_clear

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

free_stack

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

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