143 lines
3.6 KiB
C
143 lines
3.6 KiB
C
/* ************************************************************************** */
|
|
/* */
|
|
/* ::: :::::::: */
|
|
/* test.c :+: :+: :+: */
|
|
/* +:+ +:+ +:+ */
|
|
/* By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ */
|
|
/* +#+#+#+#+#+ +#+ */
|
|
/* Created: 2019/03/28 11:37:06 by tmaze #+# #+# */
|
|
/* Updated: 2019/04/03 15:58:22 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[1]));
|
|
lst_inddel(&(data.adj[0]));
|
|
ft_memdel((void**)&(data.adj));
|
|
return (1);
|
|
}
|
|
if (!add_link(&data, 1, 4))
|
|
{
|
|
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, 2, 3) || !add_link(&data, 2, 5))
|
|
{
|
|
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[5]));
|
|
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[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, 6) || !add_link(&data, 5, 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');
|
|
i++;
|
|
}
|
|
}
|
|
tablst_inddel(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);
|
|
}
|