136 lines
2.7 KiB
C
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);
|
|
}
|