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

Stack(Array)

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

exercise 00

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

stack_init

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

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์—์„œ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” data๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.
     void *stack_peek(t_stack *stack);
    

stack_pop

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

stack_clear

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

free_stack

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

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