From 26f2acfcadf670af1e36a93886f31375840f16c9 Mon Sep 17 00:00:00 2001 From: Tanguy MAZE Date: Thu, 21 Feb 2019 16:49:39 +0100 Subject: [PATCH] hewow owo added header, libft and all basic interactions with stack --- .gitmodules | 3 +++ includes/push_swap.h | 40 ++++++++++++++++++++++++++++++++++++++++ libft | 1 + srcs/ps_push.c | 21 +++++++++++++++++++++ srcs/ps_rerot.c | 40 ++++++++++++++++++++++++++++++++++++++++ srcs/ps_rot.c | 36 ++++++++++++++++++++++++++++++++++++ srcs/ps_swap.c | 31 +++++++++++++++++++++++++++++++ 7 files changed, 172 insertions(+) create mode 100644 .gitmodules create mode 100644 includes/push_swap.h create mode 160000 libft create mode 100644 srcs/ps_push.c create mode 100644 srcs/ps_rerot.c create mode 100644 srcs/ps_rot.c create mode 100644 srcs/ps_swap.c diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..39d888b --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "libft"] + path = libft + url = https://github.com/tvdu29/libft.git diff --git a/includes/push_swap.h b/includes/push_swap.h new file mode 100644 index 0000000..469660c --- /dev/null +++ b/includes/push_swap.h @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* push_swap.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: tmaze +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/02/21 14:13:53 by tmaze #+# #+# */ +/* Updated: 2019/02/21 16:05:33 by tmaze ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef PUSH_SWAP_H +# define PUSH_SWAP_H + +# include +# include +# include "libft.h" + +typedef struct s_stack +{ + int nb; + struct s_stack *next; +} t_stack; + +t_stack *ps_stknew(int nb); +void *ps_stkpsh(t_stack **s, t_stack *new); +t_stack *ps_stkpop(t_stack **s); + +size_t ps_stksize(t_stack *s); + +void ps_swap(t_stack **s); +void ps_sswap(t_stack **a, t_stack **b); +void ps_push(t_stack **s1, t_stack **s2); +void ps_rot(t_stack **s); +void ps_rrot(t_stack **a, t_stack **b); +void ps_rerot(t_stack **s); +void ps_rrerot(t_stack **a, t_stack **b); + +#endif diff --git a/libft b/libft new file mode 160000 index 0000000..4b44c49 --- /dev/null +++ b/libft @@ -0,0 +1 @@ +Subproject commit 4b44c49fc6caa15379cd821f967e53462d4dc837 diff --git a/srcs/ps_push.c b/srcs/ps_push.c new file mode 100644 index 0000000..6881efc --- /dev/null +++ b/srcs/ps_push.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ps_push.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: tmaze +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/02/21 15:59:46 by tmaze #+# #+# */ +/* Updated: 2019/02/21 16:06:04 by tmaze ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +void ps_push(t_stack **s1, t_stack **s2) +{ + t_stack *tmp; + + tmp = ps_stkpop(s2); + ps_stkpsh(s1, tmp); +} diff --git a/srcs/ps_rerot.c b/srcs/ps_rerot.c new file mode 100644 index 0000000..ba10c5e --- /dev/null +++ b/srcs/ps_rerot.c @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ps_rerot.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: tmaze +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/02/21 16:32:04 by tmaze #+# #+# */ +/* Updated: 2019/02/21 16:38:13 by tmaze ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +void ps_rerot(t_stack **s) +{ + t_stack *prec; + t_stack *tmp; + + if (*s != NULL && ps_stksize(*s) > 2) + { + prec = *s; + tmp = (*s)->next; + while (tmp->next != NULL) + { + tmp = tmp->next; + prec = prec->next; + } + prec->next = NULL; + ps_stkpsh(s, tmp); + } + else if (*s != NULL && ps_stksize(*s) == 2) + ps_swap(s); +} + +void ps_rrerot(t_stack **a, t_stack **b) +{ + ps_rerot(a); + ps_rerot(b); +} diff --git a/srcs/ps_rot.c b/srcs/ps_rot.c new file mode 100644 index 0000000..d2d9617 --- /dev/null +++ b/srcs/ps_rot.c @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ps_rot.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: tmaze +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/02/21 16:07:55 by tmaze #+# #+# */ +/* Updated: 2019/02/21 16:26:22 by tmaze ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +void ps_rot(t_stack **s) +{ + t_stack *tmp; + t_stack *ind; + + if (*s != NULL && ps_stksize(*s) > 2) + { + tmp = ps_stkpop(s); + ind = *s; + while (ind->next != NULL) + ind = ind->next; + ind->next = tmp; + } + else if (*s != NULL && ps_stksize(*s) == 2) + ps_swap(s); +} + +void ps_rrot(t_stack **a, t_stack **b) +{ + ps_rot(a); + ps_rot(b); +} diff --git a/srcs/ps_swap.c b/srcs/ps_swap.c new file mode 100644 index 0000000..3a09a04 --- /dev/null +++ b/srcs/ps_swap.c @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ps_swap.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: tmaze +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/02/21 14:06:40 by tmaze #+# #+# */ +/* Updated: 2019/02/21 15:19:00 by tmaze ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "push_swap.h" + +void ps_swap(t_stack **s) +{ + int tmp; + + if (*s != NULL && ps_stksize(*s) >= 2) + { + tmp = (*s)->nb; + (*s)->nb = (*s)->next->nb; + (*s)->next->nb = tmp; + } +} + +void ps_sswap(t_stack **a, t_stack **b) +{ + ps_swap(a); + ps_swap(b); +}