diff --git a/algorithms/medium_algo.c b/algorithms/medium_algo.c index 99807a8..0c405e0 100644 --- a/algorithms/medium_algo.c +++ b/algorithms/medium_algo.c @@ -14,10 +14,5 @@ void bucket_algo(void) { - /*int range; - t_tab *preset; - - range = range_bucket(piles->a); - preset = get_tabs(piles->a, range);*/ return ; } diff --git a/algorithms/medium_utils/utils_medium.c b/algorithms/medium_utils/utils_medium.c index 1f715b7..0e09104 100644 --- a/algorithms/medium_utils/utils_medium.c +++ b/algorithms/medium_utils/utils_medium.c @@ -34,8 +34,7 @@ int get_next_lower(t_stack *first, int old_lower) int next_lower; tmp = first; - next_lower = 2147483646; - + next_lower = 2147483647; while (tmp->next != first) { if (old_lower < tmp->value && tmp->value <= next_lower) diff --git a/algorithms/medium_utils/utils_struct_tab.c b/algorithms/medium_utils/utils_struct_tab.c index 8096765..e9ec8ab 100644 --- a/algorithms/medium_utils/utils_struct_tab.c +++ b/algorithms/medium_utils/utils_struct_tab.c @@ -20,13 +20,12 @@ t_tab *allocate_tab(int range_max, int nb) tab = malloc(sizeof(t_tab)); if (!tab) return (NULL); + tab->next = NULL; tab->max_range = range_max; tab->nb_in = nb; return (tab); } -#include - t_tab *get_tabs(t_stack *first, int range) { t_tab *tmp; @@ -44,7 +43,7 @@ t_tab *get_tabs(t_stack *first, int range) { tmp->next = get_next_tab(first, tmp, range); if (!(tmp->next)) - return (free_tab(first_tab)); + return (free_tab(&first_tab)); tmp = tmp->next; scan_nb_in_tab += tmp->nb_in; } @@ -78,15 +77,12 @@ t_tab *get_next_tab(t_stack *first, t_tab *tab, int range) return (next_tab); } -t_tab *free_tab(t_tab *first) +t_tab *free_tab(t_tab **first) { - t_tab *tmp; - - while (first) - { - tmp = first->next; - free(first); - first = tmp; - } + if (!(*first)) + return (NULL); + if ((*first)->next) + free_tab(&(*first)->next); + free(*first); return (NULL); } diff --git a/main.c b/main.c index b5721c3..16a59a2 100644 --- a/main.c +++ b/main.c @@ -50,14 +50,14 @@ int verif_no_double(int *tab, int len, int value) int adding_number(int *tab, int len) { - int stock; + int stock; stock = tab[0]; while (!verif_no_double(tab, len, stock)) { stock = 0 + rand() % (250 - 0 + 1); } - return stock; + return (stock); } int *auto_shuffle(int len_tab) @@ -72,21 +72,20 @@ int *auto_shuffle(int len_tab) tab[0] = 0 + rand() % (250 - 0 + 1); while (i < len_tab) { - tab[i] = adding_number(tab, i); + tab[i] = adding_number(tab, i - 1); i++; } return (tab); } - int main(int argc, char **argv) { if (argc > 1) { - if (strcmp(argv[1], "-t1") == 0) - test1(argc, argv++); - else if (strcmp(argv[1], "-t2") == 0) + if (strcmp(argv[1], "-t2") == 0) test2(argv++); + else + test1(argc, argv); } return (0); } diff --git a/parsing.c b/parsing.c index abf65e6..786cfb3 100644 --- a/parsing.c +++ b/parsing.c @@ -45,6 +45,8 @@ t_stacks *init_big_stacks(int argc, char **argv) t_stack *a; stacks = malloc(sizeof(t_stacks)); + stacks->a = NULL; + stacks->b = NULL; if (!stacks) return (NULL); a = parsing(argc, argv); diff --git a/parsing_2.c b/parsing_2.c index 8ca0abe..1eeeeb0 100644 --- a/parsing_2.c +++ b/parsing_2.c @@ -17,7 +17,7 @@ void print_tabs(t_tab *preset) { t_tab *tab; - + tab = preset; while (tab) { @@ -59,6 +59,8 @@ t_stacks *init_big_stacks2(int *tab, int len) t_stack *a; stacks = malloc(sizeof(t_stacks)); + stacks->a = NULL; + stacks->b = NULL; if (!stacks) return (NULL); a = parsing2(tab, len); diff --git a/push_swap b/push_swap index 4d299d9..2a0c1e7 100755 Binary files a/push_swap and b/push_swap differ diff --git a/push_swap.h b/push_swap.h index 4578fd2..12a2193 100644 --- a/push_swap.h +++ b/push_swap.h @@ -68,7 +68,7 @@ int my_sqrt(int nb); int get_max_number(t_stack *first); int get_min_number(t_stack *first); int range_bucket(t_stack *first); -t_tab *free_tab(t_tab *first); +t_tab *free_tab(t_tab **first); t_tab *get_next_tab(t_stack *first, t_tab *tab, int range); t_tab *init_first_tab(t_stack *first, int range); t_tab *allocate_tab(int range_max, int nb); diff --git a/test_one.c b/test_one.c index 683e67e..8dd2e0f 100644 --- a/test_one.c +++ b/test_one.c @@ -14,7 +14,7 @@ #include #include -int test1(int argc, char **argv) +int test1(int argc, char **argv) { t_stacks *stacks; @@ -32,18 +32,17 @@ int test1(int argc, char **argv) stack_clear_all(stacks->a, stacks->a); if (stacks->b) stack_clear_all(stacks->b, stacks->b); + free(stacks); return (0); } -int test2(char **argv){ - +int test2(char **argv) +{ int *tab; int len; t_tab *preset; t_stacks *piles; - int i; - i = 0; len = ft_atoi(argv[2]); if (len < 1) { @@ -51,16 +50,15 @@ int test2(char **argv){ return (0); } tab = auto_shuffle(len); - while (i < len) - { - printf("tab(%d) [%d]\n", i, tab[i]); - i++; - } piles = init_big_stacks2(tab, len); - printf("RANGE BUCKET %d\n", range_bucket(piles->a)); preset = get_tabs(piles->a, range_bucket(piles->a)); print_tabs(preset); free(tab); - free_tab(preset); + free_tab(&preset); + if (piles->a) + stack_clear_all(piles->a, piles->a); + if (piles->b) + stack_clear_all(piles->b, piles->b); + free(piles); return (0); -} \ No newline at end of file +}