diff options
| author | Charles <sircharlesaze@gmail.com> | 2019-10-08 18:19:36 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2019-10-08 18:19:36 +0200 |
| commit | 4e2e8aac225f2a226573ae36e5327a8c4073bbbc (patch) | |
| tree | 1946afb4965208899382464910ee1e4a78a65939 | |
| parent | c73c541621f0567c511bbcac4a0bf40e116c53d7 (diff) | |
| download | libft-4e2e8aac225f2a226573ae36e5327a8c4073bbbc.tar.gz libft-4e2e8aac225f2a226573ae36e5327a8c4073bbbc.tar.bz2 libft-4e2e8aac225f2a226573ae36e5327a8c4073bbbc.zip | |
Added bonus functions WIP
| -rw-r--r-- | ft_lstadd.c | 6 | ||||
| -rw-r--r-- | ft_lstadd_back.c | 17 | ||||
| -rw-r--r-- | ft_lstadd_front.c | 7 | ||||
| -rw-r--r-- | ft_lstclear.c | 15 | ||||
| -rw-r--r-- | ft_lstdel.c | 6 | ||||
| -rw-r--r-- | ft_lstdelone.c | 6 | ||||
| -rw-r--r-- | ft_lstiter.c | 8 | ||||
| -rw-r--r-- | ft_lstlast.c | 11 | ||||
| -rw-r--r-- | ft_lstmap.c | 13 | ||||
| -rw-r--r-- | ft_lstnew.c | 6 | ||||
| -rw-r--r-- | ft_lstsize.c | 15 | ||||
| -rw-r--r-- | libft.h | 14 |
12 files changed, 104 insertions, 20 deletions
diff --git a/ft_lstadd.c b/ft_lstadd.c deleted file mode 100644 index 549b670..0000000 --- a/ft_lstadd.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "libft.h" - -void ft_lstadd(t_list **alst, t_list *new) -{ - -} diff --git a/ft_lstadd_back.c b/ft_lstadd_back.c new file mode 100644 index 0000000..e2cbf2a --- /dev/null +++ b/ft_lstadd_back.c @@ -0,0 +1,17 @@ +#include <stdlib.h> +#include "libft.h" + +void ft_lstadd_back(t_list **alst, t_list *new) +{ + t_list *cursor; + + if (*alst == NULL) + { + *alst = new; + return ; + } + cursor = *alst; + while (cursor->next != NULL) + cursor = cursor->next; + cursor->next = new; +} diff --git a/ft_lstadd_front.c b/ft_lstadd_front.c new file mode 100644 index 0000000..4b1be2a --- /dev/null +++ b/ft_lstadd_front.c @@ -0,0 +1,7 @@ +#include "libft.h" + +void ft_lstadd_front(t_list **alst, t_list *new) +{ + new->next = *alst; + *alst = new; +} diff --git a/ft_lstclear.c b/ft_lstclear.c new file mode 100644 index 0000000..b944cda --- /dev/null +++ b/ft_lstclear.c @@ -0,0 +1,15 @@ +#include <stdlib.h> +#include "libft.h" + +void ft_lstclear(t_list **lst, void (*del)(void *)) +{ + t_list *tmp; + + while (*lst != NULL) + { + tmp = (*lst)->next; + (*del)((*lst)->content); + free(*lst); + *lst = tmp; + } +} diff --git a/ft_lstdel.c b/ft_lstdel.c deleted file mode 100644 index 881a7b2..0000000 --- a/ft_lstdel.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "libft.h" - -void ft_lstdel(t_list **alst, void (*del)(void *, size_t)) -{ - -} diff --git a/ft_lstdelone.c b/ft_lstdelone.c index bf5f61e..4cc1106 100644 --- a/ft_lstdelone.c +++ b/ft_lstdelone.c @@ -1,6 +1,8 @@ +#include <stdlib.h> #include "libft.h" -void ft_lstdelone(t_list **alst, void (*del)(void *, size_t)) +void ft_lstdelone(t_list *lst, void (*del)(void *)) { - + (*del)(lst->content); + free(lst); } diff --git a/ft_lstiter.c b/ft_lstiter.c index ef19bf8..7eed34b 100644 --- a/ft_lstiter.c +++ b/ft_lstiter.c @@ -1,6 +1,10 @@ #include "libft.h" -void ft_lstiter(t_list *lst, void (*f)(t_list *elem)) +void ft_lstiter(t_list *lst, void (*f)(t_list *)) { - + while (lst != NULL) + { + (*f)(lst); + lst = lst->next; + } } diff --git a/ft_lstlast.c b/ft_lstlast.c new file mode 100644 index 0000000..7442937 --- /dev/null +++ b/ft_lstlast.c @@ -0,0 +1,11 @@ +#include <stdlib.h> +#include "libft.h" + +t_list *ft_lstlast(t_list *lst) +{ + if (lst == NULL) + return (NULL); + while (lst->next != NULL) + lst = lst->next; + return (lst); +} diff --git a/ft_lstmap.c b/ft_lstmap.c index 7c1a89b..41a7e19 100644 --- a/ft_lstmap.c +++ b/ft_lstmap.c @@ -1,6 +1,17 @@ +#include <stdlib.h> #include "libft.h" -t_list * ft_lstmap(t_list *lst, t_list *(*f)(t_list *elem)) +t_list *ft_lstmap(t_list *lst, t_list *(*f)(t_list *)) { + t_list *mapped; + t_list *tmp; + while (lst != NULL) + { + tmp = ft_lstnew(lst->content); + tmp->next = lst->next; + tmp = (*f)(tmp); + ft_lstadd_back(&mapped, tmp); + } + return (mapped); } diff --git a/ft_lstnew.c b/ft_lstnew.c index d4f53bc..01ab599 100644 --- a/ft_lstnew.c +++ b/ft_lstnew.c @@ -1,14 +1,14 @@ #include <stdlib.h> #include "libft.h" -t_list * ft_lstnew(void const *content, size_t content_size) +t_list *ft_lstnew(void const *content) { t_list *elem; if ((elem = (t_list*)malloc(sizeof(t_list))) == NULL) return (NULL); - elem->content = (void*)content; - elem->content_size = content_size; + /* elem->content = (void*)content; */ + (void)content; elem->next = NULL; return (elem); } diff --git a/ft_lstsize.c b/ft_lstsize.c new file mode 100644 index 0000000..4324269 --- /dev/null +++ b/ft_lstsize.c @@ -0,0 +1,15 @@ +#include <stdlib.h> +#include "libft.h" + +int ft_lstsize(t_list *lst) +{ + int counter; + + counter = 0; + while (lst != NULL) + { + counter++; + lst = lst->next; + } + return (counter); +} @@ -18,6 +18,12 @@ # define TRUE 1 # define FALSE 0 +typedef struct s_list +{ + void *content; + struct s_list *next; +} t_list; + void *ft_memset(void *s, int c, size_t n); void ft_bzero(void *s, size_t n); void *ft_memcpy(void *dest, const void *src, size_t n); @@ -71,5 +77,13 @@ 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); +t_list *ft_lstnew(void const *content); +void ft_lstadd_front(t_list **alst, t_list *new); +int ft_lstsize(t_list *lst); +t_list *ft_lstlast(t_list *lst); +void ft_lstadd_back(t_list **alst, 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)(t_list *)); #endif |
