aboutsummaryrefslogtreecommitdiff
path: root/c12/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'c12/main.c')
-rw-r--r--c12/main.c159
1 files changed, 132 insertions, 27 deletions
diff --git a/c12/main.c b/c12/main.c
index 3f0d8c5..e0e21c9 100644
--- a/c12/main.c
+++ b/c12/main.c
@@ -9,18 +9,34 @@
#include "ex05/ft_list_push_strs.c"
#include "ex06/ft_list_clear.c"
#include "ex07/ft_list_at.c"
-/*#include "ex08/ft_list_reverse.c"*/
-/*#include "ex09/ft_list_foreach.c"*/
-/*#include "ex10/ft_list_foreach_if.c"*/
-/*#include "ex11/ft_list_find.c"*/
-/*#include "ex12/ft_list_remove_if.c"*/
-/*#include "ex13/ft_list_merge.c"*/
-/*#include "ex14/ft_list_sort.c"*/
-/*#include "ex15/ft_list_reverse_fun.c"*/
-/*#include "ex16/ft_sorted_list_insert.c"*/
-/*#include "ft_sorted_list_merge.c"*/
+#include "ex08/ft_list_reverse.c"
+#include "ex09/ft_list_foreach.c"
+#include "ex10/ft_list_foreach_if.c"
+#include "ex11/ft_list_find.c"
+#include "ex12/ft_list_remove_if.c"
+#include "ex13/ft_list_merge.c"
+#include "ex14/ft_list_sort.c"
+#include "ex15/ft_list_reverse_fun.c"
+#include "ex16/ft_sorted_list_insert.c"
+#include "ex17/ft_sorted_list_merge.c"
+void print_list(t_list *list)
+{
+ while (list)
+ {
+ printf("%d", *(int*)list->data);
+ if (list->next != NULL)
+ printf(", ");
+ list = list->next;
+ }
+ printf("\n");
+}
+
+void each(void *data);
+int forcmp(void *data_ref, void* data);
+int sortcmp(void *data, void *data_ref);
void ft_free(void *data);
+void idontdoshit(void *d);
int main()
{
@@ -38,26 +54,33 @@ int main()
printf("\n--------------\n");
ft_list_push_front(&list, &b);
- printf("%d\n", *(int*)list->data);
- printf("%d\n", *(int*)list->next->data);
- printf("%s", (char*)list->next->next);
+ ft_list_push_front(&list, &c);
+ print_list(list);
+ ft_list_push_front(&list, &d);
+ print_list(list);
- printf("\n--------------\n");
+ printf("--------------size\n");
printf("size %d\n", ft_list_size(list));
+ ft_list_push_front(&list, &d);
ft_list_push_front(&list, &c);
- printf("size %d", ft_list_size(list));
+ ft_list_push_front(&list, &d);
+ print_list(list);
+ printf("size %d\n", ft_list_size(list));
- printf("\n--------------\n");
+ printf("--------------last\n");
printf("last %d", *(int*)ft_list_last(list)->data);
- printf("\n--------------\n");
- ft_list_push_back(&list, &c);
- printf("list last %d\n", *(int*)ft_list_last(list)->data);
+ printf("\n--------------pushback\n");
+ print_list(list);
+ ft_list_push_back(&list, &g);
+ print_list(list);
t_list *empty = NULL;
ft_list_push_back(&empty, &e);
- printf("empty last %d\n", *(int*)ft_list_last(empty)->data);
+ print_list(empty);
+ ft_list_push_back(&empty, &f);
+ print_list(empty);
- printf("\n--------------\n");
+ printf("--------------strs\n");
char **strs = malloc(sizeof(char*) * 4);
strs[0] = malloc(sizeof(char) * 32);
strs[1] = malloc(sizeof(char) * 32);
@@ -71,22 +94,104 @@ int main()
for (; list_strs; list_strs = list_strs->next)
printf("%s | ", (char*)list_strs->data);
- /*ft_list_clear(list_strs, &ft_free);*/
+ ft_list_clear(list_strs, &ft_free);
- printf("\n--------------\n");
+ printf("\n--------------at\n");
printf("%d\n", *(int*)(ft_list_at(list, 0)->data));
- printf("%f\n", *(double*)(ft_list_at(list, 1)->data));
- printf("%s\n", (char*)ft_list_at(list, 2));
+ printf("%d\n", *(int*)(ft_list_at(list, 7)->data));
+ printf("%s\n", (char*)(ft_list_at(list, 8)));
+ printf("%s\n", (char*)(ft_list_at(list, 10)));
- printf("\n--------------\n");
- // reverse
+ printf("--------------reverse\n");
+ print_list(list);
+ ft_list_reverse(&list);
+ print_list(list);
+ print_list(empty);
+ ft_list_reverse(&empty);
+ print_list(empty);
+
+ printf("--------------foreach\n");
+ ft_list_foreach(list, &each);
+
+ printf("\n--------------foreachif\n");
+ ft_list_foreach_if(list, &each, &d, &forcmp);
printf("\n--------------\n");
+ t_list *found = ft_list_find(list, &d, &forcmp);
+ print_list(found);
+
+ printf("\n--------------removeif\n");
+ print_list(list);
+ ft_list_remove_if(&list, &d, &forcmp, &idontdoshit);
+ print_list(list);
+
+ printf("--------------merge\n");
+ print_list(list);
+ ft_list_merge(&list, empty);
+ print_list(list);
+
+ printf("--------------sort\n");
+ print_list(list);
+ ft_list_sort(&list, &sortcmp);
+ print_list(list);
+ printf("--------------revfun\n");
+ ft_list_push_front(&list, &b);
+ ft_list_push_front(&list, &b);
+ ft_list_push_front(&list, &b);
+ print_list(list);
+ ft_list_reverse_fun(list);
+ print_list(list);
+
+ printf("--------------sortinsert\n");
+ int low = 0;
+ int big = 8;
+ print_list(list);
+ ft_sorted_list_insert(&list, &c, &sortcmp);
+ print_list(list);
+ ft_sorted_list_insert(&list, &d, &sortcmp);
+ print_list(list);
+ ft_sorted_list_insert(&list, &e, &sortcmp);
+ print_list(list);
+ ft_sorted_list_insert(&list, &big, &sortcmp);
+ print_list(list);
+ ft_sorted_list_insert(&list, &low, &sortcmp);
+ print_list(list);
+
+ printf("--------------sortmerge\n");
+ print_list(empty);
+ ft_sorted_list_merge(&empty, list, &sortcmp);
+ print_list(empty);
+}
+
+void each(void *data)
+{
+ printf("%d ", *(int*)data * 10);
+}
+
+int forcmp(void *data_ref, void* data)
+{
+ if (*(int*)data_ref == *(int*)data)
+ return (0);
+ return (1);
+}
+int sortcmp(void *data, void *data_ref)
+{
+ if (*(int*)data < *(int*)data_ref)
+ return (-1);
+ else if (*(int*)data > *(int*)data_ref)
+ return (1);
+ else
+ return (0);
}
void ft_free(void *data)
{
free((char*)data);
}
+
+void idontdoshit(void *d)
+{
+ (void)d;
+}