#ifndef LINKED_LIST_H #define LINKED_LIST_H #include typedef struct _list_node { int data; struct _list_node *next; } ListNode; ListNode *create_list_node(int data); bool search(ListNode *head, int data); int size_list(ListNode *head); void print_list(ListNode *head); void destroy_list(ListNode *head); ListNode *insert_front(ListNode *head, int data); ListNode *insert_back(ListNode *head, int data); ListNode *insert_at(ListNode *head, int position, int data); ListNode *delete_value(ListNode *head, int data); ListNode *delete_at(ListNode *head, int position); bool search_rec(ListNode *head, int data); int size_list_rec(ListNode *head); void print_list_rec(ListNode *head); void print_list_inverso_rec(ListNode *head); void destroy_list_rec(ListNode *head); ListNode *insert_back_rec(ListNode *head, int data); ListNode *insert_at_rec(ListNode *head, int position, int data); ListNode *delete_value_rec(ListNode *head, int data); ListNode *invert_list_rec(ListNode *head); bool compare_lists_rec(ListNode *l1, ListNode *l2); #endif