#include #include #include typedef struct stacknode { int element; struct stacknode* next; } Node, **Stack; Stack sCreate(); void sPush(Stack s, int element); int sPop(Stack s); int sEmpty(Stack s); Stack sCreate() { Stack s = malloc(sizeof(Node*)); *s = NULL; return s; } void sPush(Stack s, int element) { Node* n = malloc(sizeof(Node)); n->element = element; n->next = *s; *s = n; } int sPop(Stack s) { assert(!sEmpty(s)); Node* tmp = *s; *s = tmp->next; int element = tmp->element; free(tmp); return element; } int sEmpty(Stack s) { return (*s == NULL); } int main( int argc, char *argv[] ) { Stack s = sCreate(); for(int i = 0; i < 10; i++) sPush(s,i); while(!sEmpty(s)) printf("%d\n",sPop(s)); return 0; }