From bd89cee6a4fa8ca6c212632a48d1647e44a9e46c Mon Sep 17 00:00:00 2001 From: Dominik Kaiser Date: Sun, 10 Mar 2024 19:10:22 +0100 Subject: [PATCH] Bonus --- Makefile | 17 +++++++- ft_calloc.c | 12 +----- ft_lstadd_back_bonus.c | 30 ++++++++++++++ ft_lstadd_front_bonus.c | 19 +++++++++ ft_lstclear_bonus.c | 32 +++++++++++++++ ft_lstdelone_bonus.c | 19 +++++++++ ft_lstiter_bonus.c | 25 ++++++++++++ ft_lstlast_bonus.c | 22 ++++++++++ ft_lstmap_bonus.c | 43 ++++++++++++++++++++ ft_lstnew_bonus.c | 34 ++++++++++++++++ ft_lstsize_bonus.c | 28 +++++++++++++ ft_strdup.c | 4 +- ft_strnstr.c | 6 +-- ft_substr.c | 8 ++-- libft.h | 89 ++++++++++++++++++++++++----------------- 15 files changed, 331 insertions(+), 57 deletions(-) create mode 100644 ft_lstadd_back_bonus.c create mode 100644 ft_lstadd_front_bonus.c create mode 100644 ft_lstclear_bonus.c create mode 100644 ft_lstdelone_bonus.c create mode 100644 ft_lstiter_bonus.c create mode 100644 ft_lstlast_bonus.c create mode 100644 ft_lstmap_bonus.c create mode 100644 ft_lstnew_bonus.c create mode 100644 ft_lstsize_bonus.c diff --git a/Makefile b/Makefile index 8759efa..1fdbab6 100644 --- a/Makefile +++ b/Makefile @@ -37,8 +37,20 @@ SRC_FILES = ft_atoi.c \ ft_tolower.c \ ft_toupper.c \ + OBJ_FILES = $(SRC_FILES:.c=.o) +BONUS_SRC = ft_lstnew_bonus.c \ + ft_lstadd_front_bonus.c \ + ft_lstsize_bonus.c \ + ft_lstlast_bonus.c \ + ft_lstadd_back_bonus.c \ + ft_lstdelone_bonus.c \ + ft_lstclear_bonus.c \ + ft_lstiter_bonus.c \ + ft_lstmap_bonus.c + +BONUS_OBJ = $(BONUS_SRC:.c=.o) all: $(NAME) @@ -49,6 +61,9 @@ clean: rm -f $(OBJ_FILES) fclean: clean - -rm -f $(NAME) + rm -f $(NAME) re: fclean all + +bonus: $(BONUS_OBJ) + ar rcs $(NAME) $(BONUS_OBJ) diff --git a/ft_calloc.c b/ft_calloc.c index 2b711d9..0dcc434 100644 --- a/ft_calloc.c +++ b/ft_calloc.c @@ -6,7 +6,7 @@ /* By: dkaiser next) + { + current = current->next; + } + current->next = new; +} diff --git a/ft_lstadd_front_bonus.c b/ft_lstadd_front_bonus.c new file mode 100644 index 0000000..9c4c30e --- /dev/null +++ b/ft_lstadd_front_bonus.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstadd_front_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dkaiser next = *lst; + *lst = new; +} diff --git a/ft_lstclear_bonus.c b/ft_lstclear_bonus.c new file mode 100644 index 0000000..9af095e --- /dev/null +++ b/ft_lstclear_bonus.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstclear_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dkaiser next) + { + next = current->next; + ft_lstdelone(current, del); + current = next; + } + ft_lstdelone(current, del); + } + *lst = NULL; +} diff --git a/ft_lstdelone_bonus.c b/ft_lstdelone_bonus.c new file mode 100644 index 0000000..9dd78c8 --- /dev/null +++ b/ft_lstdelone_bonus.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstdelone_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dkaiser content); + free(lst); +} diff --git a/ft_lstiter_bonus.c b/ft_lstiter_bonus.c new file mode 100644 index 0000000..73efbe9 --- /dev/null +++ b/ft_lstiter_bonus.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstiter_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dkaiser next) + { + f(lst->content); + lst = lst->next; + } + f(lst->content); +} diff --git a/ft_lstlast_bonus.c b/ft_lstlast_bonus.c new file mode 100644 index 0000000..e0b4d6d --- /dev/null +++ b/ft_lstlast_bonus.c @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstlast_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dkaiser next) + lst = lst->next; + return (lst); +} diff --git a/ft_lstmap_bonus.c b/ft_lstmap_bonus.c new file mode 100644 index 0000000..91eabfc --- /dev/null +++ b/ft_lstmap_bonus.c @@ -0,0 +1,43 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstmap_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dkaiser content)); + if (!new) + { + free(new); + return (NULL); + } + result = new; + lst = lst->next; + while (lst) + { + new->next = ft_lstnew(f(lst->content)); + if (!new->next) + { + ft_lstclear(&new, del); + return (NULL); + } + new = new->next; + lst = lst->next; + } + // new->next = NULL; + return (result); +} diff --git a/ft_lstnew_bonus.c b/ft_lstnew_bonus.c new file mode 100644 index 0000000..a8f43ce --- /dev/null +++ b/ft_lstnew_bonus.c @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstnew_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dkaiser content = content; + result->next = NULL; + return (result); +} + +/* #include */ +/* int main() { */ +/* t_list l; */ +/* char s[] = "Hello"; */ + +/* l = *ft_lstnew(&s); */ +/* printf("%s\n", l.content); */ +/* } */ diff --git a/ft_lstsize_bonus.c b/ft_lstsize_bonus.c new file mode 100644 index 0000000..c91b0c9 --- /dev/null +++ b/ft_lstsize_bonus.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstsize_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: dkaiser next) + { + lst = lst->next; + len++; + } + return (len); +} diff --git a/ft_strdup.c b/ft_strdup.c index 2f59166..c7a6591 100644 --- a/ft_strdup.c +++ b/ft_strdup.c @@ -6,7 +6,7 @@ /* By: dkaiser = slen) diff --git a/libft.h b/libft.h index e646b9e..1256bdc 100644 --- a/libft.h +++ b/libft.h @@ -5,8 +5,8 @@ /* +:+ +:+ +:+ */ /* By: dkaiser # include -int ft_isalpha(int c); -int ft_isdigit(int c); -int ft_isalnum(int c); -int ft_isprint(int c); -int ft_isascii(int c); -int ft_strlen(const char *str); -void *ft_memset(void *b, int c, size_t len); -void ft_bzero(void *s, size_t n); -void *ft_memcpy(void *dst, const void *src, size_t n); -void *ft_memmove(void *dst, const void *src, size_t len); -size_t ft_strlcpy(char *dst, const char *src, size_t dstsize); -size_t ft_strlcat(char *dst, const char *src, size_t dstsize); -int ft_toupper(int c); -int ft_tolower(int c); -char *ft_strchr(const char *s, int c); -char *ft_strrchr(const char *s, int c); -int ft_strncmp(const char *s1, const char *s2, size_t n); -void *ft_memchr(const void *s, int c, size_t n); -int ft_memcmp(const void *s1, const void *s2, size_t n); -char *ft_strnstr(const char *haystack, const char *needle, size_t len); -int ft_atoi(const char *str); -void *ft_calloc(size_t count, size_t size); -char *ft_strdup(const char *s1); -char *ft_substr(char const *s, unsigned int start, size_t len); -char *ft_strjoin(char const *s1, char const *s2); -char *ft_strtrim(char const *s1, char const *set); -char **ft_split(char const *s, char c); -char *ft_itoa(int n); -char *ft_strmapi(char const *s, char (*f)(unsigned int, char)); -void ft_striteri(char *s, void (*f)(unsigned int, char *)); -void ft_putchar_fd(char c, int fd); -void ft_putstr_fd(char *s, int fd); -void ft_putendl_fd(char *s, int fd); -void ft_putnbr_fd(int n, int fd); +int ft_isalpha(int c); +int ft_isdigit(int c); +int ft_isalnum(int c); +int ft_isprint(int c); +int ft_isascii(int c); +int ft_strlen(const char *str); +void *ft_memset(void *b, int c, size_t len); +void ft_bzero(void *s, size_t n); +void *ft_memcpy(void *dst, const void *src, size_t n); +void *ft_memmove(void *dst, const void *src, size_t len); +size_t ft_strlcpy(char *dst, const char *src, size_t dstsize); +size_t ft_strlcat(char *dst, const char *src, size_t dstsize); +int ft_toupper(int c); +int ft_tolower(int c); +char *ft_strchr(const char *s, int c); +char *ft_strrchr(const char *s, int c); +int ft_strncmp(const char *s1, const char *s2, size_t n); +void *ft_memchr(const void *s, int c, size_t n); +int ft_memcmp(const void *s1, const void *s2, size_t n); +char *ft_strnstr(const char *haystack, const char *needle, + size_t len); +int ft_atoi(const char *str); +void *ft_calloc(size_t count, size_t size); +char *ft_strdup(const char *s1); +char *ft_substr(char const *s, unsigned int start, size_t len); +char *ft_strjoin(char const *s1, char const *s2); +char *ft_strtrim(char const *s1, char const *set); +char **ft_split(char const *s, char c); +char *ft_itoa(int n); +char *ft_strmapi(char const *s, char (*f)(unsigned int, char)); +void ft_striteri(char *s, void (*f)(unsigned int, char *)); +void ft_putchar_fd(char c, int fd); +void ft_putstr_fd(char *s, int fd); +void ft_putendl_fd(char *s, int fd); +void ft_putnbr_fd(int n, int fd); + +typedef struct s_list +{ + void *content; + struct s_list *next; +} t_list; +t_list *ft_lstnew(void *content); +void ft_lstadd_front(t_list **lst, t_list *new); +int ft_lstsize(t_list *lst); +t_list *ft_lstlast(t_list *lst); +void ft_lstadd_back(t_list **lst, t_list *new); +void ft_lstdelone(t_list *lst, void (*del)(void *)); +void ft_lstclear(t_list **lst, void (*del)(void *)); +void ft_lstiter(t_list *lst, void (*f)(void *)); +t_list *ft_lstmap(t_list *lst, void *(*f)(void *), + void (*del)(void *)); #endif -- 2.47.2