we got it !
functionning edmunds_karp still need some testing for already used nodes still need some memory protection
This commit is contained in:
146
srcs/test.c
Normal file
146
srcs/test.c
Normal file
@@ -0,0 +1,146 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* test.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2019/03/28 11:37:06 by tmaze #+# #+# */
|
||||
/* Updated: 2019/03/31 19:47:57 by tmaze ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "lem_in.h"
|
||||
|
||||
#define NB_NODES 8
|
||||
|
||||
int add_link(t_lmdata *data, int n1, int n2)
|
||||
{
|
||||
return (lst_indadd(&(data->adj[n1]), n2) && lst_indadd(&(data->adj[n2]), n1));
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
t_lmdata data;
|
||||
t_ind **path;
|
||||
t_ind *it;
|
||||
int i;
|
||||
|
||||
data.nb_nodes = NB_NODES;
|
||||
if ((data.adj = (t_ind**)ft_memalloc(sizeof(t_ind*) * NB_NODES)) == NULL)
|
||||
return (1);
|
||||
if (!add_link(&data, 0, 1) || !add_link(&data, 0, 2))
|
||||
{
|
||||
lst_inddel(&(data.adj[0]));
|
||||
ft_memdel((void**)&(data.adj));
|
||||
return (1);
|
||||
}
|
||||
if (!add_link(&data, 1, 4))
|
||||
{
|
||||
lst_inddel(&(data.adj[4]));
|
||||
lst_inddel(&(data.adj[1]));
|
||||
lst_inddel(&(data.adj[0]));
|
||||
ft_memdel((void**)&(data.adj));
|
||||
return (1);
|
||||
}
|
||||
if (!add_link(&data, 2, 3) || !add_link(&data, 2, 5))
|
||||
{
|
||||
lst_inddel(&(data.adj[4]));
|
||||
lst_inddel(&(data.adj[3]));
|
||||
lst_inddel(&(data.adj[2]));
|
||||
lst_inddel(&(data.adj[1]));
|
||||
lst_inddel(&(data.adj[0]));
|
||||
ft_memdel((void**)&(data.adj));
|
||||
return (1);
|
||||
}
|
||||
if (!add_link(&data, 3, 6))
|
||||
{
|
||||
lst_inddel(&(data.adj[6]));
|
||||
lst_inddel(&(data.adj[4]));
|
||||
lst_inddel(&(data.adj[3]));
|
||||
lst_inddel(&(data.adj[2]));
|
||||
lst_inddel(&(data.adj[1]));
|
||||
lst_inddel(&(data.adj[0]));
|
||||
ft_memdel((void**)&(data.adj));
|
||||
return (1);
|
||||
}
|
||||
/* if (!add_link(&data, 4, 5)) */
|
||||
/* { */
|
||||
/* lst_inddel(&(data.adj[6])); */
|
||||
/* lst_inddel(&(data.adj[5])); */
|
||||
/* lst_inddel(&(data.adj[4])); */
|
||||
/* lst_inddel(&(data.adj[3])); */
|
||||
/* lst_inddel(&(data.adj[2])); */
|
||||
/* lst_inddel(&(data.adj[1])); */
|
||||
/* lst_inddel(&(data.adj[0])); */
|
||||
/* ft_memdel((void**)&(data.adj)); */
|
||||
/* return (1); */
|
||||
/* } */
|
||||
if (!add_link(&data, 5, 7))
|
||||
{
|
||||
lst_inddel(&(data.adj[7]));
|
||||
lst_inddel(&(data.adj[6]));
|
||||
lst_inddel(&(data.adj[5]));
|
||||
lst_inddel(&(data.adj[4]));
|
||||
lst_inddel(&(data.adj[3]));
|
||||
lst_inddel(&(data.adj[2]));
|
||||
lst_inddel(&(data.adj[1]));
|
||||
lst_inddel(&(data.adj[0]));
|
||||
ft_memdel((void**)&(data.adj));
|
||||
return (1);
|
||||
}
|
||||
if (!add_link(&data, 6, 7))
|
||||
{
|
||||
lst_inddel(&(data.adj[7]));
|
||||
lst_inddel(&(data.adj[6]));
|
||||
lst_inddel(&(data.adj[5]));
|
||||
lst_inddel(&(data.adj[4]));
|
||||
lst_inddel(&(data.adj[3]));
|
||||
lst_inddel(&(data.adj[2]));
|
||||
lst_inddel(&(data.adj[1]));
|
||||
lst_inddel(&(data.adj[0]));
|
||||
ft_memdel((void**)&(data.adj));
|
||||
return (1);
|
||||
}
|
||||
ft_printf("===== list of adj =====\n");
|
||||
i = 0;
|
||||
while (i < NB_NODES)
|
||||
{
|
||||
ft_printf("===== adj of %d =====\n", i);
|
||||
it = data.adj[i];
|
||||
while (it)
|
||||
{
|
||||
ft_printf("index: %d\nweight: %d\n\n", it->index, it->weight);
|
||||
it = it->next;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
path = edmunds_karp(&data, 0, 7);
|
||||
if (path != NULL)
|
||||
{
|
||||
i = 0;
|
||||
while (path[i])
|
||||
{
|
||||
it = path[i];
|
||||
while (it)
|
||||
{
|
||||
ft_printf(" %d -> ", it->index);
|
||||
it = it->next;
|
||||
}
|
||||
ft_putchar('\n');
|
||||
lst_inddel(&(path[i]));
|
||||
i++;
|
||||
}
|
||||
}
|
||||
ft_memdel((void**)&path);
|
||||
lst_inddel(&(data.adj[7]));
|
||||
lst_inddel(&(data.adj[6]));
|
||||
lst_inddel(&(data.adj[5]));
|
||||
lst_inddel(&(data.adj[4]));
|
||||
lst_inddel(&(data.adj[3]));
|
||||
lst_inddel(&(data.adj[2]));
|
||||
lst_inddel(&(data.adj[1]));
|
||||
lst_inddel(&(data.adj[0]));
|
||||
ft_memdel((void**)&(data.adj));
|
||||
return (0);
|
||||
}
|
||||
Reference in New Issue
Block a user