#pragma once
typedef struct Node {
struct Node* next, * prev;
void* data;
} Node;
void list_print(Node* head, void (*print_func)(void*));
void list_print_pointers(Node* head);
void list_push(Node** head, void* data);
void list_append(Node** head, void* data);
void list_insert(Node* prev_node, void* data);
Node* list_get(Node* head, unsigned index);
Node* list_search(Node* head, void* elem, int (*eq)(void*, void*));
void list_remove(Node* node);