[42SEOUL] Libft : Bonus

leejiwonn·2021년 1월 28일
1

42SEOUL

목록 보기
3/10

Libft : Bonus


👀 lstadd_back

  • 연결리스트의 끝에 새로운 요소를 추가하는 함수

기능 및 선언 형태

  • lst 의 가장 마지막 nextnew 를 담아줌.
void	ft_lstadd_back(t_list **lst, t_list *new);
  • t_list **lst : 첫 번째 연결리스트의 포인터 주소
  • t_list *new : 요소가 될 포인터 주소

반환 값

  • 없음.

더 알아가기

  • lstnew 가 NULL일 경우, return 으로 함수를 종료함.
  • lst 만 NULL일 경우, newlst 에 담아주고 함수를 종료함.

👀 lstadd_front

  • 연결리스트의 시작 부분에 새로운 요소를 추가하는 함수

기능 및 선언 형태

  • lst 의 시작 부분에 new 를 담아줌.
void	ft_lstadd_front(t_list **lst, t_list *new);
  • t_list **lst : 첫 번째 연결리스트의 포인터 주소
  • t_list *new : 요소가 될 포인터 주소

반환 값

  • 없음.

👀 lstclear

  • 주어진 연결리스트의 요소와 그 후의 모든 요소를 삭제하는 함수

기능 및 선언 형태

  • 함수 del 과 free를 사용하여, 주어진 요소와 해당 요소의 모든 후속 요소를 삭제하고 free 함.
void	ft_lstclear(t_list **lst, void (*del)(void *));
  • t_list **lst : 요소의 포인터 주소
  • void (*del)(void *) : content 를 삭제하는데 사용되는 함수의 주소

반환 값

  • 없음.

더 알아가기

  • lstdel 이 비어있을 경우, 함수를 종료함.
  • lst->next 가 NULL일 경우 주어진 요소 하나만 삭제하며, 아닐 경우 주어진 요소부터 반복하면서 모든 요소를 삭제함.
  • free 후에도 메모리에는 이전 값이 남아있기 때문에 0으로 초기화를 해주어야 함.

👀 lstdelone

  • 주어진 연결리스트의 요소를 삭제하는 함수

기능 및 선언 형태

  • 함수 del 과 free를 사용하여, 주어진 요소를 삭제하고 free 함.
void	ft_lstdelone(t_list **lst, void (*del)(void *));
  • t_list **lst : 요소의 포인터 주소
  • void (*del)(void *) : content 를 삭제하는데 사용되는 함수의 주소

반환 값

  • 없음.

더 알아가기

  • lstdel 이 비어있을 경우, 함수를 종료함.
  • free 후에도 메모리에는 이전 값이 남아있기 때문에 0으로 초기화를 해주는 것이 좋음.

👀 lstiter

  • 연결리스트의 모든 요소에 특정 함수를 적용시키는 함수

기능 및 선언 형태

  • lst 를 반복하며 각 요소의 content 에 함수 f 를 적용시킴.
void	ft_lstiter(t_list *lst, void (*f)(void *));
  • t_list *lst : 요소의 포인터 주소
  • void (*f)(void *) : 리스트에 반복적으로 사용되는 함수의 주소

반환 값

  • 없음.

더 알아가기

  • lstf 가 비어있을 경우, 함수를 종료함.

👀 lstlast

  • 연결리스트의 가장 마지막 요소를 반환하는 함수

기능 및 선언 형태

  • lst 의 가장 마지막 연결리스트를 반환함.
t_list	ft_lstlast(t_list *lst);
  • t_list *lst : 요소의 포인터 주소

반환 값

  • 리스트의 마지막 요소를 반환함.

더 알아가기

  • lst 가 비어있을 경우, NULL을 반환함.

👀 lstmap

  • 입력 받은 연결리스트에 특정 함수를 적용하여 새로운 리스트를 반환하는 함수
  • 함수를 적용하는 중에 실패할 시, 모두 초기화 후 종료됨.

기능 및 선언 형태

  • 입력 받은 lstf 함수를 적용하여, 새로운 구조체 node 에 할당해줌.
  • node 를 새로운 구조체 curr 에 담아 lst 를 순회함. (node => 첫 번째 주소 값 기억)
    • 새로운 구조체 tmpf 함수를 적용한 결과를 할당해주고, curr->nexttmp 를 담아주는 방법으로 순회함.
    • 이 때, 할당에 실패할 시 모든 요소를 del 함수로 초기화 하고 free 한 후, NULL을 반환함.
  • 정상적으로 끝나면, 저장해두었던 첫 번째 주소값이 담긴 node 를 반환함.
t_list	*ft_lstmap(t_list *lst, void *(f)(void *), void(*del)(void *));
  • t_list *lst : 요소의 포인터 주소
  • void *(f)(void *) : 각 요소에 적용할 함수
  • void(*del)(void *) : 초기화 시 사용할 함수

반환 값

  • 성공 시, 새로 할당해준 구조체의 시작 주소를 반환함.
  • 할당 실패 시, NULL을 반환함.

더 알아가기

  • lstf 가 비어있을 경우, NULL을 반환함.

👀 lstnew

  • 새로운 구조체를 생성하고, content 에 입력 받은 요소를 담아 반환해주는 함수

기능 및 선언 형태

  • t_list 크기를 가진 새로운 구조체를 생성하고, 입력 받은 content 를 요소에 담아 반환해줌.
  • next 에는 NULL을 담아주어야 함.
t_list	*ft_lstnew(void *content);
  • void *content : 새 구조체에 담아줄 요소

반환 값

  • 성공 시, 새로 할당해준 구조체의 시작 주소를 반환함.
  • 할당 실패 시, NULL을 반환함.

👀 lstsize

  • 연결리스트의 개수를 반환해주는 함수

기능 및 선언 형태

  • 입력 받은 lst 의 개수(길이)를 세어줌.
int		ft_lstsize(t_list *lst);
  • t_list *lst : 요소의 포인터 주소

반환 값

  • 입력 받은 연결리스트의 개수를 정수 타입으로 반환함.

0개의 댓글