rename stack_functions folder to stack_utils + add stack add and stack remove functions

This commit is contained in:
David Gailleton
2025-12-08 16:16:23 +01:00
parent 804050576b
commit 8e1bbe674c
7 changed files with 77 additions and 0 deletions

33
stack_utils/push.c Normal file
View File

@@ -0,0 +1,33 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* push.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: mteriier <mteriier@student.42lyon.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/12/08 15:09:40 by mteriier #+# #+# */
/* Updated: 2025/12/08 15:35:23 by mteriier ### ########lyon.fr */
/* */
/* ************************************************************************** */
#include "push_swap.h"
void pa(t_stacks *stacks)
{
t_stack a;
if (!stacks || !stacks->b)
return ;
a = stack->a;
a->value = stacks->b->value;
}
void pb(t_stacks *stacks)
{
t_stack b;
if (!stacks || !stacks->a)
return ;
b = stacks->b;
b->value = stacks->a->value;
}

31
stack_utils/rev_rotate.c Normal file
View File

@@ -0,0 +1,31 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* rev_rotate.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: dgaillet <dgaillet@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/12/08 14:43:45 by dgaillet #+# #+# */
/* Updated: 2025/12/08 14:52:53 by dgaillet ### ########lyon.fr */
/* */
/* ************************************************************************** */
#include "push_swap.h"
void rra(t_stacks *stacks)
{
if (stacks && stacks->a && stacks->a->previous)
stacks->a = stacks->a->previous;
}
void rrb(t_stacks *stacks)
{
if (stacks && stacks->b && stacks->b->previous)
stacks->b = stacks->b->previous;
}
void rrr(t_stacks *stacks)
{
rra(stacks);
rrb(stacks);
}

31
stack_utils/rotate.c Normal file
View File

@@ -0,0 +1,31 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* rotate.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: dgaillet <dgaillet@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/12/08 14:32:10 by dgaillet #+# #+# */
/* Updated: 2025/12/08 14:52:37 by dgaillet ### ########lyon.fr */
/* */
/* ************************************************************************** */
#include "push_swap.h"
void ra(t_stacks *stacks)
{
if (stacks && stacks->a && stacks->a->next)
stacks->a = stacks->a->next;
}
void rb(t_stacks *stacks)
{
if (stacks && stacks->b && stacks->b->next)
stacks->b = stacks->b->next;
}
void rr(t_stacks *stacks)
{
ra(stacks);
rb(stacks);
}

54
stack_utils/stack_add.c Normal file
View File

@@ -0,0 +1,54 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* stack_add.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: dgaillet <dgaillet@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/12/08 15:52:40 by dgaillet #+# #+# */
/* Updated: 2025/12/08 16:03:54 by dgaillet ### ########lyon.fr */
/* */
/* ************************************************************************** */
#include "push_swap.h"
#include <stdlib.h>
t_stack *new_stack(int value)
{
t_stack *new;
new = malloc(sizeof(t_stack));
if (!new)
return (NULL);
new->value = value;
new->next = NULL;
new->previous = NULL;
return (new);
}
void stack_add_back(t_stack **stack, t_stack *new)
{
if (!stack || !new)
return ;
if (!(*stack))
{
(*stack) = new;
new->next = new;
new->previous = new;
}
else
{
(*stack)->previous->next = new;
new->previous = *(stack)->previous;
(*stack)->previous = new;
new->next = *stack;
}
}
void stack_add_front(t_stack **stack, t_stack *new)
{
if (!stack || *new)
return ;
stack_add_back(stack, new);
*stack = new;
}

View File

@@ -0,0 +1,23 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* stack_remove.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: dgaillet <dgaillet@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/12/08 16:05:27 by dgaillet #+# #+# */
/* Updated: 2025/12/08 16:15:28 by dgaillet ### ########lyon.fr */
/* */
/* ************************************************************************** */
#include "push_swap.h"
#include <stdlib.h>
void stack_clear_all(t_stack *stack, t_stack *first)
{
if (!stack)
return ;
if (stack->next != first)
stack_clear_all(stack->next, first);
free(stack);
}

45
stack_utils/swap.c Normal file
View File

@@ -0,0 +1,45 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* swap.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: mteriier <mteriier@student.42lyon.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/12/08 14:48:44 by mteriier #+# #+# */
/* Updated: 2025/12/08 15:04:39 by mteriier ### ########lyon.fr */
/* */
/* ************************************************************************** */
#include "push_swap.h"
void sa(t_stacks *stacks)
{
t_stack a;
int stock;
if (!stacks || !stacks->a || !stacks->a->next)
return ;
a = stacks->a;
stock = a->value;
a->value = a->next->value;
a->next->value = stock;
}
void sb(t_stacks *stacks)
{
t_stack b;
int stock;
if (!stacks || !stacks->b || !stacks->b->next)
return ;
b = stacks->b;
stock = b->value;
b->value = b->next->value;
b->next->value = stock;
}
void ss(t_stacks *stacks)
{
sa(stacks);
sb(stacks);
}