-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathpush_swap.c
60 lines (55 loc) · 1.84 KB
/
push_swap.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* push_swap.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: doberyn <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/02 23:34:19 by doberyn #+# #+# */
/* Updated: 2020/01/02 23:34:20 by doberyn ### ########.fr */
/* */
/* ************************************************************************** */
#include "push_swap.h"
/*
** ft_sort - Распределяет стек в нужную функцию,
** распределение зависит от количества элементов(чисел) в стеке.
** ༺༻
** Состояние: ✓
** Нормы: ✓
** ༺༻
*/
void ft_sort(t_stacks *stacks)
{
if (stacks->count_a <= 3)
ft_sort_3_element(stacks);
else if (stacks->count_a <= 5)
ft_sort_5_element(stacks);
else
ft_global_sort(stacks);
}
int main(int argc, char **argv)
{
t_data *new;
t_stacks *stacks;
if (argc < 2)
exit(1);
if (!(new = (t_data *)malloc(sizeof(t_data))))
exit(1);
if (!(stacks = (t_stacks *)malloc(sizeof(t_stacks))))
exit(1);
ft_null(stacks, new);
if (ft_validation(argc, argv))
{
ft_array_separation(argc, argv, new);
ft_duplicate_check(new, stacks);
if (ft_is_sorted(new))
{
ft_init_stack(new, stacks);
ft_sort(stacks);
ft_free_stack(stacks);
}
}
free(new);
free(stacks);
return (0);
}