pushswap/initialization.c
2023-12-12 17:44:13 +01:00

66 lines
1.8 KiB
C
Executable File

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* initialization.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: fgras-ca <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/07/31 17:32:33 by fgras-ca #+# #+# */
/* Updated: 2023/07/31 17:46:42 by fgras-ca ### ########.fr */
/* */
/* ************************************************************************** */
#include "push_swap.h"
t_stack *fill_stack_values(int argc, char **argv, int start_idx)
{
t_stack *stack_a;
long int nb;
int i;
stack_a = NULL;
nb = 0;
i = start_idx;
while (i < argc)
{
nb = ft_atoi(argv[i]);
if (nb > INT_MAX || nb < INT_MIN)
exit_error(&stack_a, NULL);
if (i == 0)
stack_a = stack_new((int)nb);
else
stack_add_bottom(&stack_a, stack_new((int)nb));
i++;
}
return (stack_a);
}
void assign_index(t_stack *stack_a, int stack_size)
{
t_stack *ptr;
t_stack *highest;
int value;
while (--stack_size > 0)
{
ptr = stack_a;
value = INT_MIN;
highest = NULL;
while (ptr)
{
if (ptr->value == INT_MIN && ptr->index == 0)
ptr->index = 1;
if (ptr->value > value && ptr->index == 0)
{
value = ptr->value;
highest = ptr;
ptr = stack_a;
}
else
ptr = ptr->next;
}
if (highest != NULL)
highest->index = stack_size;
}
}