Exemple #1
0
int		main(void)
{
		t_list	*list1;
		t_list	*list2;
		char	*s1 = "unu";
		char	*s2 = "doi";
		char	*s3 = "trei";
		char	*s4 = "patru";
		char	*s5 = "cinci";
		char	*s6 = "sase";

		list1 = NULL;
		list2 = NULL;
		ft_list_push_back(&list1, s1);
		ft_list_push_back(&list1, s2);
		ft_list_push_back(&list1, s3);
		ft_list_push_back(&list2, s4);
		ft_list_push_back(&list2, s5);
		ft_list_push_back(&list2, s6);
		ft_putstr("List 1:\n");
		ft_print_list(list1);
		ft_putstr("List 2:\n");
		ft_print_list(list2);
		ft_list_merge(&list1, &list2);
		ft_putstr("List 1 + 2:\n");
		ft_print_list(list1);
		ft_putstr("Dim 1:\n");
		ft_putnbr(ft_list_size(list1));
		ft_putchar('\n');
		ft_putstr("Dim 2:\n");
		ft_putnbr(ft_list_size(list2));
		ft_putchar('\n');
		return (0);
}
Exemple #2
0
int		evaluate_infix(char **expr, t_list **vs, t_list **os)
{
	int		i;

	i = -1;
	while (expr[++i] != 0)
	{
		if (is_operator(expr[i]) == 0 && expr[i][0] != '(' && expr[i][0] != ')')
			pf(vs, expr[i]);
		else if (is_operator(expr[i]))
		{
			while (ft_list_size(*os) != 0 && g(expr[i]) <= g((*os)->data))
				pf(vs, a(pop(os), ft_atoi(pop(vs)), ft_atoi(pop(vs))));
			pf(os, expr[i]);
		}
		else if (expr[i][0] == '(')
			pf(os, expr[i]);
		else if (expr[i][0] == ')')
		{
			while ((*os)->data[0] != '(')
				pf(vs, a(pop(os), ft_atoi(pop(vs)), ft_atoi(pop(vs))));
			pop(os);
		}
	}
	return (0);
}
Exemple #3
0
int		main(void)
{
	char		*line1;
	char		*line2;
	t_dlist		*list;

	ft_putstr("\n WELCOME ON MINISHELL2 BY PBOURDON \n");
	list = NULL;
	list = dlist_new(list);
	list = ft_cpy_env(list);
	if (ft_list_size(list->p_head) == 0)
		list = ft_cpy_env2(list);
	ft_putstr("$>");
	while (get_next_line(1, &line1, 0) == 1)
	{
		line2 = ft_delete_tab(line1);
		list = ft_choose(line2, list);
		free(line2);
		free(line1);
		if (list == NULL)
			return (0);
		ft_show_prompt();
	}
	return (0);
}
Exemple #4
0
int		ft_list_size(t_tets *begin_list)
{
	if (!(begin_list))
		return (0);
	if (!(begin_list->next))
		return (1);
	else
		return (1 + ft_list_size(begin_list->next));
}
Exemple #5
0
int		ft_tab_size(void)
{
	int		tot;
	int		nb;

	tot = ft_list_size(g_tetriminos) * 4;
	nb = 1;
	while ((nb * nb) < tot)
		nb++;
	return (nb);
}
Exemple #6
0
char	*str_catlist(t_list *str_list, char *sep, int length)
{
	char	*str;
	int		list_size;

	list_size = ft_list_size(str_list);
	if (list_size == 0)
		return ("\0");
	length += ft_strlen(sep) * (list_size - 1);
	str = (char*)malloc((length + 1) * sizeof(char));
	if (!str)
		return (str);
	*str = '\0';
	while (str_list != 0)
	{
		ft_strcat_sep(str, (char*)str_list->data, sep);
		str_list = str_list->next;
	}
	return (str);
}
void	ft_list_reverse_fun(t_list *begin_list)
{
	t_list			*tmp1;
	t_list			*tmp2;
	unsigned int	list_size;
	unsigned int	i;
	unsigned int	j;

	list_size = ft_list_size(begin_list);
	i = 0;
	j = list_size - 1;
	while (i != j && i != list_size / 2)
	{
		tmp1 = ft_list_at(begin_list, i);
		tmp2 = ft_list_at(begin_list, j);
		ft_swap(&tmp1, &tmp2);
		i++;
		j--;
	}
}
void	ft_list_reverse_fun(t_list *begin_list)
{
	int		sum;
	int		i;
	int		j;
	t_list	*list;
	t_list	*search;

	sum = ft_list_size(begin_list);
	list = begin_list;
	if (sum == 0 || sum == 1)
		return ;
	i = 0;
	while (i < sum / 2)
	{
		j = i + 1;
		search = list->next;
		while (j++ < sum - i - 1)
			search = search->next;
		swap_p(&(list->data), &(search->data));
		list = list->next;
		i++;
	}
}
Exemple #9
0
size_t		ft_list_size(t_list *begin_list)
{
	if (begin_list->next == NULL)
		return (1);
	return (1 + ft_list_size(begin_list->next));
}
Exemple #10
0
int		main(void)
{
	char	*exname;
	int		exnb = 0;
	t_list	*link;
	t_list	*base;

	(void)link;
	base = ft_create_elem("ABC");
	base->next = ft_create_elem("012");
	base->next->next = ft_create_elem("xyz");
	start_day(11);
#ifdef ex00
	exname = "ft_create_elem";
	start_exo(exnb);

	link = ft_create_elem("A");
	link->next = ft_create_elem("B");
	ft_print_list(link);
	printf("expected:\n");
	printf("[ A ] -> [ B ] -> NULL\n");
#endif

	exnb++;
#ifdef ex01
	exname = "ft_list_push_back";
	start_exo(exnb);
	ft_warning1();
	link = NULL;
	ft_list_push_back(&link, "A");
	ft_list_push_back(&link, "B");
	ft_list_push_back(&link, "C");
	ft_print_list(link);
	printf("expected:\n");
	printf("[ A ] -> [ B ] -> [ C ] -> NULL\n");
#endif

	exnb++;
#ifdef ex02
	exname = "ft_list_push_front";
	start_exo(exnb);
	ft_warning1();
	link = NULL;
	ft_list_push_front(&link, "C");
	ft_list_push_front(&link, "B");
	ft_list_push_front(&link, "A");
	ft_print_list(link);
	printf("expected:\n");
	printf("[ A ] -> [ B ] -> [ C ] -> NULL\n");
#endif

	exnb++;
#ifdef ex03
	start_exo(exnb);
	exname = "ft_list_size";
	ft_warning1();
	printf("list : ");
	ft_print_list(base);
	printf("%s = %i\n", exname, ft_list_size(base));
	printf("\nlist : ");
	ft_print_list(NULL);
	printf("%s = %i\n", exname, ft_list_size(NULL));
#endif

	exnb++;
#ifdef ex04
	start_exo(exnb);
	exname = "ft_list_last";
	ft_warning1();

	printf("list : ");
	ft_print_list(base);
	printf("%s = ", exname);
	ft_print_list(ft_list_last(base));

	printf("\nlist : ");
	ft_print_list(NULL);
	printf("%s = ", exname);
	ft_print_list(ft_list_last(NULL));
#endif

	exnb++;
#ifdef ex05
	start_exo(exnb);
	exname = "ft_list_push_params";
	printf("pas encore de suite de tests pour cet exercice :(\n");
#endif

	exnb++;
#ifdef ex06
	start_exo(exnb);
	exname = "ft_list_clear";

	printf("%s\n", exname);
	printf("avant : ");
	ft_print_list(base);
	ft_list_clear(&base);
	printf("apres : ");
	ft_print_list(base);
	base = ft_create_elem("ABC");
	base->next = ft_create_elem("012");
	base->next->next = ft_create_elem("xyz");
#endif

	exnb++;
#ifdef ex07
	start_exo(exnb);
	exname = "ft_list_at";
	ft_warning1();

	printf("list : ");
	ft_print_list(base);
	printf("%s(list, 0) = ", exname);
	ft_print_list(ft_list_at(base, 0));

	printf("\nlist : ");
	ft_print_list(base);
	printf("%s(list, 1) = ", exname);
	ft_print_list(ft_list_at(base, 1));

	printf("\n%s(NULL, 0) = ", exname);
	ft_print_list(ft_list_at(NULL, 0));

	printf("\n%s(NULL, 1) = ", exname);
	ft_print_list(ft_list_at(NULL, 1));
#endif

	exnb++;
#ifdef ex08
	start_exo(exnb);
	exname = "ft_list_reverse";

	printf("%s\n", exname);
	printf("avant : ");
	ft_print_list(base);
	ft_list_reverse(&base);
	printf("apres : ");
	ft_print_list(base);
#endif


	exnb++;
#ifdef ex09
	start_exo(exnb);
	exname = "ft_list_foreach";
	base = ft_create_elem("012");
	base->next = ft_create_elem("ABC");
	base->next->next = ft_create_elem("xyz");

	printf("%s, avec la fonction ft_putstr()\n", exname);
	printf("list : ");
	ft_print_list(base);
	printf("%s : ", exname);
	fflush(stdout);
	ft_list_foreach(base, &corr_ft_putstr);
#endif

	exnb++;
#ifdef ex10
	start_exo(exnb);
	exname = "ft_list_foreach_if";

	printf("list : ");
	ft_print_list(base);
	printf("%s(list, &ft_putstr, '012', &strcmp) = ", exname);
	fflush(stdout);
	ft_list_foreach_if(base, &corr_ft_putstr, "012", &strcmp);
	printf(" (012 attendu)");
#endif

	exnb++;
#ifdef ex11
	start_exo(exnb);
	exname = "ft_list_find";
	base = ft_create_elem("012");
	base->next = ft_create_elem("ABC");
	base->next->next = ft_create_elem("xyz");

	printf("list : ");
	ft_print_list(base);
	printf("%s(list, 'ABC', &strcmp) = ", exname);
	fflush(stdout);
	ft_print_list(ft_list_find(base, "ABC", &strcmp));
#endif

	exnb++;
#ifdef ex12
	start_exo(exnb);
	exname = "ft_list_remove_if";
	base = ft_create_elem("012");
	base->next = ft_create_elem("ABC");
	base->next->next = ft_create_elem("xyz");

	printf("list : ");
	ft_print_list(base);
	printf("%s(list, 'ABC', &strcmp) = ", exname);
	fflush(stdout);
	ft_list_remove_if(&base, "ABC", &strcmp);
	ft_print_list(base);
#endif

t_list	*list1;
t_list	*list2;
	
	(void)list1;
	(void)list2;
	exnb++;
#ifdef ex13
	start_exo(exnb);
	exname = "ft_list_merge";
	ft_warning1();

	list1 = NULL;
	list2 = NULL;
	printf("list1 : ");
	fflush(stdout);
	ft_print_list(list1);
	printf("list2 : ");
	fflush(stdout);
	ft_print_list(list2);
	ft_list_merge(&list1, list2);
	printf("merge : ");
	fflush(stdout);
	ft_print_list(list1);
	printf("\n");

	list1 = NULL;
	list2 = ft_create_elem("012");
	printf("list1 : ");
	fflush(stdout);
	ft_print_list(list1);
	printf("list2 : ");
	fflush(stdout);
	ft_print_list(list2);
	ft_list_merge(&list1, list2);
	printf("merge : ");
	fflush(stdout);
	ft_print_list(list1);
	printf("\n");

	list1 = ft_create_elem("012");
	list2 = NULL;
	printf("list1 : ");
	fflush(stdout);
	ft_print_list(list1);
	printf("list2 : ");
	fflush(stdout);
	ft_print_list(list2);
	ft_list_merge(&list1, list2);
	printf("merge : ");
	fflush(stdout);
	ft_print_list(list1);
	printf("\n");

	list1 = ft_create_elem("012");
	list1->next = ft_create_elem("345");
	list2 = ft_create_elem("abc");
	list2->next = ft_create_elem("def");
	printf("list1 : ");
	fflush(stdout);
	ft_print_list(list1);
	printf("list2 : ");
	fflush(stdout);
	ft_print_list(list2);
	ft_list_merge(&list1, list2);
	printf("merge : ");
	fflush(stdout);
	ft_print_list(list1);
#endif

	exnb++;
#ifdef ex14
	start_exo(exnb);
	exname = "ft_list_sort";
	printf("%s\n", exname);
	ft_warning1();

	base = NULL;
	printf("avant : ");
	fflush(stdout);
	ft_print_list(base);
	ft_list_sort(&base, &strcmp);
	printf("apres : ");
	fflush(stdout);
	ft_print_list(base);
	printf("\n");

	base = ft_create_elem("3");
	base->next = ft_create_elem("1");
	base->next->next = ft_create_elem("2");
	printf("avant : ");
	fflush(stdout);
	ft_print_list(base);
	ft_list_sort(&base, &strcmp);
	printf("apres : ");
	fflush(stdout);
	ft_print_list(base);
#endif

	exnb++;
#ifdef ex15
	start_exo(exnb);
	exname = "ft_list_reverse_fun";

	base = NULL;
	printf("%s\n", exname);
	printf("avant : ");
	ft_print_list(base);
	ft_list_reverse_fun(base);
	printf("apres : ");
	ft_print_list(base);
	printf("\n");

	base = ft_create_elem("1");
	base->next = ft_create_elem("2");
	base->next->next = ft_create_elem("3");
	printf("avant : ");
	ft_print_list(base);
	ft_list_reverse_fun(base);
	printf("apres : ");
	ft_print_list(base);
	printf("\n");

	base = ft_create_elem("1");
	base->next = ft_create_elem("2");
	base->next->next = ft_create_elem("3");
	base->next->next->next = ft_create_elem("4");
	printf("avant : ");
	ft_print_list(base);
	ft_list_reverse_fun(base);
	printf("apres : ");
	ft_print_list(base);
#endif

	exnb++;
#ifdef ex16
	start_exo(exnb);
	exname = "ft_sorted_list_insert";
	printf("%s\n", exname);
	ft_warning1();

	base = ft_create_elem("2");
	base->next = ft_create_elem("3");
	base->next->next = ft_create_elem("5");
	printf("avant : ");
	fflush(stdout);
	ft_print_list(base);
	ft_sorted_list_insert(&base, "7", &strcmp);
	printf("apres : ");
	fflush(stdout);
	ft_print_list(base);

	base = NULL;
	printf("\navant : ");
	fflush(stdout);
	ft_print_list(base);
	ft_sorted_list_insert(&base, "0", &strcmp);
	printf("apres : ");
	fflush(stdout);
	ft_print_list(base);

#endif

	exnb++;
#ifdef ex17
	start_exo(exnb);
	exname = "ft_sorted_list_merge";
	printf("%s\n", exname);
	ft_warning1();

	list1 = NULL;
	list2 = NULL;
	printf("list1 : ");
	fflush(stdout);
	ft_print_list(list1);
	printf("list2 : ");
	fflush(stdout);
	ft_print_list(list2);
	ft_sorted_list_merge(&list1, list2, &strcmp);
	printf("merge : ");
	fflush(stdout);
	ft_print_list(list1);
	printf("\n");

	list1 = NULL;
	list2 = ft_create_elem("0");
	printf("list1 : ");
	fflush(stdout);
	ft_print_list(list1);
	printf("list2 : ");
	fflush(stdout);
	ft_print_list(list2);
	ft_sorted_list_merge(&list1, list2, &strcmp);
	printf("merge : ");
	fflush(stdout);
	ft_print_list(list1);
	printf("\n");

	list1 = ft_create_elem("0");
	list2 = NULL;
	printf("list1 : ");
	fflush(stdout);
	ft_print_list(list1);
	printf("list2 : ");
	fflush(stdout);
	ft_print_list(list2);
	ft_sorted_list_merge(&list1, list2, &strcmp);
	printf("merge : ");
	fflush(stdout);
	ft_print_list(list1);
	printf("\n");

	list1 = ft_create_elem("0");
	list1->next = ft_create_elem("2");
	list2 = ft_create_elem("1");
	list2->next = ft_create_elem("3");
	printf("list1 : ");
	fflush(stdout);
	ft_print_list(list1);
	printf("list2 : ");
	fflush(stdout);
	ft_print_list(list2);
	ft_sorted_list_merge(&list1, list2, &strcmp);
	printf("merge : ");
	fflush(stdout);
	ft_print_list(list1);
#endif
}
int		main(int ac, char **av)
{
    t_str	str1, str2;
    int		k, i, j;
    t_list	*tmp;

    k = 0;
    while (k < (ac == 1 ? K_MAX : ac - 1))
        switch (ac == 1 ? k++ : atoi(av[++k]))
        {
        case 0 :
            if (k + 1 < ac)
                str1 = av[++k];
            else
                str1 = strdup("Foo Bar Baz");
            printf("Ex 00 : expected [| %s |] :\t%s", str1, GREEN);
            ft_print_list_str(ft_create_elem(str1));
            printf("%s\n", END);
            break ;
        case 1 :
            if (k + 1 < ac)
                str1 = av[++k];
            else
                str1 = strdup("Hello");
            if (k + 1 < ac)
                str2 = av[++k];
            else
                str2 = strdup("World");
            tmp = ft_create_elem(str1);
            printf("Ex 01 :\n\t- expected [| %s ; %s ; %s |] (normal push back)\n\t\t%s", str1, str2, str2, GREEN);
            ft_list_push_back(&tmp, str2);
            ft_list_push_back(&tmp, str2);
            ft_print_list_str(tmp);
            printf("%s\t- expected [| %s ; %s |] (push back on an empty list)\n\t\t%s", END, str1, str2, GREEN);
            tmp = NULL;
            ft_list_push_back(&tmp, str1);
            ft_list_push_back(&tmp, str2);
            ft_print_list_str(tmp);
            printf("%s\n", END);
            break ;
        case 2 :
            if (k + 1 < ac)
                str1 = av[++k];
            else
                str1 = strdup("Caesar");
            if (k + 1 < ac)
                str2 = av[++k];
            else
                str2 = strdup("Ave");
            tmp = ft_create_elem(str1);
            printf("Ex 02 :\n\t- expected [| %s ; %s ; %s |] (normal front back)\n\t\t%s", str1, str2, str2, GREEN);
            ft_list_push_front(&tmp, str2);
            ft_list_push_front(&tmp, str2);
            ft_print_list_str(tmp);
            printf("%s\t- expected [| %s ; %s |] (push front on an empty list)\n\t\t%s", END, str1, str2, GREEN);
            tmp = NULL;
            ft_list_push_front(&tmp, str1);
            ft_list_push_front(&tmp, str2);
            ft_print_list_str(tmp);
            printf("%s\n", END);
            break ;
        case 3 :
            if (k + 1 < ac)
            {
                i = atoi(av[++k]);
                i *= (i < 0 ? -1 : 1);
            }
            else
                i = 13;
            j = -1;
            tmp = NULL;
            str1 = strdup("Tralala");
            while (++j < i)
                ft_list_push_front(&tmp, str1);
            j = ft_list_size(tmp);
            if (j == i)
                printf("%s[Ex03 OK]%s\t(tested on a list of %i elements)\n", GREEN, END, i);
            else
                printf("%s>>>[Ex03 FAIL]<<<%s\t(a list of %i elements is not %i element long)\n", RED, END, i, j);
            break ;
        case 4 :
            str1 = strdup("\e[1;31m>>>[Ex04 FAIL]<<<\e[0;0m");
            str2 = strdup("\e[1;32m[Ex04 OK]\e[0;0m");
            tmp = NULL;
            i = -1;
            ft_list_push_front(&tmp, str2);
            while (++i < 50)
                ft_list_push_front(&tmp, str1);
            printf("%s\t(tested on a list of 50 elements)\n", (char*)ft_list_last(tmp)->data);
            break ;
        case 5 :
            printf("Ex05 : You should the the arguments you passed ina reversed order :\n\t%s", GREEN);
            ft_print_list_str(ft_list_push_params(ac, av));
            printf("%s\n", END);
            break ;
        }
}
Exemple #12
0
int ft_list_size(t_list *begin_list)
{
  return (begin_list) ? (ft_list_size(begin_list->next) + 1) : (0);
}
Exemple #13
0
int		ft_list_size(t_list *begin_list)
{
    if (begin_list)
        return (1 + ft_list_size(begin_list->next));
    return (0);
}