/* * test program for filter and map on sorted list of ints * * no inputs */ #include #include #include "sorted-int-list.h" /******************************************************************************* * * declarations (prototypes) of helper functions */ /* convenience function to print list */ void print_list(sorted_int_list_node_t * lst); /* functions for filter, map */ bool evens(int n) { return (n % 2) == 0; } int times2(int n) { return n * 2; } /******************************************************************************/ int main(void) { sorted_int_list_node_t * list_p = NULL; for (int i = 0; i < 10; ++i) { if (!sorted_int_list_insert(&list_p, i+1)) { printf("could not insert node\n"); return EXIT_FAILURE; } } printf("original list:\n"); print_list(list_p); printf("\n"); bool err; sorted_int_list_node_t * flist_p = sorted_int_list_filter(list_p, evens, &err); if (err) { printf("could not make filtered list\n"); return EXIT_FAILURE; } printf("filtered list:\n"); print_list(flist_p); printf("\n"); sorted_int_list_node_t * mlist_p = sorted_int_list_map(list_p, times2, &err); if (err) { printf("could not make filtered list\n"); return EXIT_FAILURE; } printf("mapped list:\n"); print_list(mlist_p); printf("\n"); sorted_int_list_remove_all(&list_p); sorted_int_list_remove_all(&flist_p); sorted_int_list_remove_all(&mlist_p); return EXIT_SUCCESS; } /******************************************************************************/ void print_list(sorted_int_list_node_t * lst) { printf("["); sorted_int_list_print(lst, stdout, " %d"); printf(" ]"); }