mirror of
https://github.com/Ladebeze66/pushswap.git
synced 2025-12-15 21:56:54 +01:00
66 lines
1.8 KiB
C
Executable File
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;
|
|
}
|
|
}
|