stack.c (564B)
1 #include <stddef.h> 2 #include <stdlib.h> 3 4 typedef struct stack { 5 int *sp; 6 int value; 7 int *stack; 8 } stack; 9 10 int pop(stack *stack){ 11 stack->sp -= sizeof(int); 12 int i = *stack->sp; 13 *stack->sp = stack->value; 14 return i; 15 } 16 17 void push(stack *stack, int value){ 18 *stack->sp = value; 19 stack->sp += sizeof(int); 20 } 21 22 void deinitstack(stack *stack){ 23 free(stack->stack); 24 free(stack); 25 stack = NULL; 26 } 27 28 stack *initstack(int value, size_t size){ 29 stack *s = malloc(sizeof(stack)); 30 s->stack = calloc(0, size*sizeof(int)); 31 s->sp = s->stack; 32 s->value = value; 33 return s; 34 } 35