aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/libft_lst.h3
-rw-r--r--src/lst/ft_lstpop_back.c31
2 files changed, 33 insertions, 1 deletions
diff --git a/include/libft_lst.h b/include/libft_lst.h
index 1d02b4e..09e7fb4 100644
--- a/include/libft_lst.h
+++ b/include/libft_lst.h
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/31 10:36:39 by cacharle #+# #+# */
-/* Updated: 2020/07/13 13:11:55 by charles ### ########.fr */
+/* Updated: 2020/08/20 13:10:57 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -41,6 +41,7 @@ int ft_lstsize(t_ftlst *lst);
void ft_lstpush_front(t_ftlst **alst, t_ftlst *new);
void ft_lstpush_back(t_ftlst **alst, t_ftlst *new);
void ft_lstpop_front(t_ftlst **lst, void (*del)(void *));
+void ft_lstpop_back(t_ftlst **lst, void (*del)(void *));
t_ftlst *ft_lstlast(t_ftlst *lst);
void ft_lstdelone(t_ftlst *lst, void (*del)(void *));
void ft_lstdestroy(t_ftlst **lst, void (*del)(void *));
diff --git a/src/lst/ft_lstpop_back.c b/src/lst/ft_lstpop_back.c
new file mode 100644
index 0000000..100ffb2
--- /dev/null
+++ b/src/lst/ft_lstpop_back.c
@@ -0,0 +1,31 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_lstpop_back.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: charles <me@cacharle.xyz> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/08/20 13:07:51 by charles #+# #+# */
+/* Updated: 2020/08/20 13:10:38 by charles ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "libft_lst.h"
+
+/*
+** \brief Delete last node
+** \param del Delete function for node data
+*/
+
+void ft_lstpop_back(t_ftlst **lst, void (*del)(void *))
+{
+ if (lst == NULL || *lst == NULL)
+ return ;
+ if ((*lst)->next == NULL)
+ {
+ ft_lstdelone(*lst, del);
+ *lst = NULL;
+ return ;
+ }
+ ft_lstpop_back(&(*lst)->next, del);
+}