diff options
| author | Charles <sircharlesaze@gmail.com> | 2019-07-21 15:26:32 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2019-07-21 15:26:32 +0200 |
| commit | 23ad79e8b41c25bb4992d103d29a17612a52e351 (patch) | |
| tree | 9de3cde07cc38e59f08885171e9f99eeab8ab71b /c12/ex14 | |
| parent | 8b6e91bdb56bc01a588718472546f2a88e750b48 (diff) | |
| download | piscine-23ad79e8b41c25bb4992d103d29a17612a52e351.tar.gz piscine-23ad79e8b41c25bb4992d103d29a17612a52e351.tar.bz2 piscine-23ad79e8b41c25bb4992d103d29a17612a52e351.zip | |
c10 done, c11 on going, rush02 probably finished, bsq start
Diffstat (limited to 'c12/ex14')
| -rw-r--r-- | c12/ex14/ft_list.h | 22 | ||||
| -rw-r--r-- | c12/ex14/ft_list_sort.c | 45 |
2 files changed, 67 insertions, 0 deletions
diff --git a/c12/ex14/ft_list.h b/c12/ex14/ft_list.h new file mode 100644 index 0000000..cf65023 --- /dev/null +++ b/c12/ex14/ft_list.h @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_list.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/07/09 14:33:17 by cacharle #+# #+# */ +/* Updated: 2019/07/19 08:26:25 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FT_LIST_H +#define FT_LIST_H + +typedef struct s_list +{ + struct s_list *next; + void *data; +} t_list; + +#endif diff --git a/c12/ex14/ft_list_sort.c b/c12/ex14/ft_list_sort.c index e69de29..698d345 100644 --- a/c12/ex14/ft_list_sort.c +++ b/c12/ex14/ft_list_sort.c @@ -0,0 +1,45 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_list_sort.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/07/19 13:43:11 by cacharle #+# #+# */ +/* Updated: 2019/07/19 13:53:54 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +static int is_sorted(t_list **begin_list, int (*cmp)()) +{ + t_list *cursor; + + while (cursor->next) + { + if ((*cmp)(cursor->data, cursor->next->data) > 0) + return (0); + cursor = cursor->next; + } + return (1); +} + +void ft_list_sort(t_list **begin_list, int (*cmp)()) +{ + t_list *cursor; + void *tmp; + + while (!is_sorted(*begin_list, cmp)) + { + cursor = *begin_list; + while (cursor->next) + { + if ((*cmp)(cursor->data, cursor->next->data) > 0) + { + tmp = cursor->data; + cursor->data = cursor->data->next; + cursor->data->next = tmp; + } + cursor = cursor->next; + } + } +} |
