pushswap/src/checkandinit.c
2023-03-01 04:36:58 +01:00

136 lines
2.7 KiB
C

/* ************************************************************************** */
/* */
/* .--. _ */
/* checkandinit.c |o_o || | */
/* |:_/ || |_ _ ___ __ */
/* By: djonker <djonker@student.codam.nl> // \ \ __| | | \ \/ / */
/* (| | )|_| |_| |> < */
/* Created: 2022/11/22 16:26:23 by djonker /'\_ _/`\__|\__,_/_/\_\ */
/* Updated: 2022/11/24 07:24:34 by djonker \___)=(___/ */
/* */
/* ************************************************************************** */
#include "../push_swap.h"
int charactercheck(char **stack)
{
int i;
int j;
i = 1;
j = 0;
while (stack[i])
{
if (stack[i][0] == '-')
{
if (stack[i][1] < '0' || stack[i][1] > '9')
return (1);
else
j++;
}
while (stack[i][j])
{
if (stack[i][j] < '0' || stack[i][j] > '9' || j > 10)
return (1);
j++;
}
i++;
j = 0;
}
return (0);
}
int finddouble(char **stack)
{
int i;
int j;
i = 1;
while (stack[i])
{
j = i;
while (stack[j])
{
if (j != i)
if (ft_atoi(stack[i]) == ft_atoi(stack[j]))
return (1);
j++;
}
i++;
}
return (0);
}
int initstack(t_varlist *vl, long value)
{
t_stack *cstack;
t_stack *last;
if (value == 9999999999)
errorreturn(vl, 1);
cstack = ft_calloc(sizeof(t_stack), 1);
if (cstack == NULL)
exit (0);
vl->nbrs++;
cstack->data = value;
if (vl->a == NULL)
{
cstack->n = cstack;
cstack->p = cstack;
vl->a = cstack;
}
else
{
last = vl->a->p;
cstack->n = vl->a;
vl->a->p = cstack;
cstack->p = last;
last->n = cstack;
}
return (0);
}
int idall(t_varlist *vl)
{
t_stack *cstack;
cstack = vl->a;
vl->low = 2147483648;
if (cstack->data < vl->low && cstack->data > vl->oldlow)
vl->low = cstack->data;
while (cstack->n != vl->a)
{
if (cstack->n->data < vl->low && cstack->n->data > vl->oldlow)
vl->low = cstack->n->data;
cstack = cstack->n;
}
vl->oldlow = vl->low;
while (vl->low != cstack->data)
{
cstack = cstack->n;
}
cstack->id = vl->idcounter;
vl->idcounter++;
return (0);
}
t_varlist *create_struct(t_varlist *vl)
{
vl = (t_varlist *)ft_calloc(sizeof(t_varlist), 1);
if (vl == NULL)
exit(1);
vl->a = NULL;
vl->b = NULL;
vl->high = 0;
vl->low = 0;
vl->moves = 0;
vl->nbrs = 0;
vl->direction = 0;
vl->idcounter = 1;
vl->oldlow = -2147483649;
vl->hdiv = 0;
vl->ldiv = 0;
vl->odiv = 0;
return (vl);
}