#pragma once struct node; typedef struct stack { struct node * head; } stack; void copy_stack(stack * dst, const stack * src, void * (* copy)(const void *)); void clear_stack(stack * s, void (*free_el)(void *)); stack new_stack(); stack * assign_stack( stack * dst, const stack * src, void * (* copy_el)(const void *), void (* free_el)(void *)); _Bool stack_empty( const stack * s ); void push_stack( stack * s, void * value ); void * pop_stack( stack * s );