/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* test.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: tmaze +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/03/28 11:37:06 by tmaze #+# #+# */ /* Updated: 2019/04/01 17:51:54 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, 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, 2, 3)) { 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, 4) || !add_link(&data, 3, 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, 4, 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, 6)) { 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, 7, 4) || !add_link(&data, 7, 1)) { 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, 6); 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); }