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); }
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); }
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); }
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)); }
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); }
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++; } }
size_t ft_list_size(t_list *begin_list) { if (begin_list->next == NULL) return (1); return (1 + ft_list_size(begin_list->next)); }
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 ; } }
int ft_list_size(t_list *begin_list) { return (begin_list) ? (ft_list_size(begin_list->next) + 1) : (0); }
int ft_list_size(t_list *begin_list) { if (begin_list) return (1 + ft_list_size(begin_list->next)); return (0); }