#include #include struct node{ struct node* prev; void* data; }; typedef struct node* LIFO; LIFO* mklifo (); void push(LIFO* lst , void*); void* pop(LIFO* lst); int main(void) { char* t = "test"; LIFO* lifo = mklifo(); push(lifo, t); printf("%s", (char *)pop(lifo)); } LIFO *mklifo (){ LIFO* ret = malloc(sizeof(struct node)); return ret; } void push(LIFO *lst , void *el){ LIFO* next = mklifo(); (*lst)->data = el; (*next)->prev = *lst; lst = next; } void *pop(LIFO *lst){ void* el; (*lst)->data = el; *lst = (*lst)->prev; return el; }