1 #include <stack.h> 2 3 #include <stdlib.h> 4 stack_create()5stack_t* stack_create() { 6 stack_t* retVal = malloc(sizeof(stack_t)); 7 retVal->size = 0; 8 retVal->capacity = 10; 9 retVal->vals = malloc(retVal->capacity*sizeof(int)); 10 return retVal; 11 } 12 stack_free(stack_t * stack)13void stack_free(stack_t* stack) { 14 free(stack->vals); 15 free(stack); 16 } 17 stack_size(stack_t * stack)18int stack_size(stack_t* stack) { 19 return stack->size; 20 } 21 stack_push(stack_t * stack,int val)22void stack_push(stack_t* stack, int val) { 23 if(stack->size == stack->capacity) { 24 stack->capacity *= 2; 25 stack->vals = realloc(stack->vals, stack->capacity*sizeof(int)); 26 } 27 stack->vals[stack->size++] = val; 28 } 29 stack_pop(stack_t * stack)30int stack_pop(stack_t* stack) { 31 if (stack->size >= 1) 32 return stack->vals[--stack->size]; 33 else 34 return 0; 35 } 36 stack_peak(stack_t * stack)37int stack_peak(stack_t* stack) { 38 if (stack->size >= 1) 39 return stack->vals[stack->size-1]; 40 else 41 return 0; 42 } 43 stack_capacity(stack_t * stack)44int stack_capacity(stack_t* stack) { 45 return stack->capacity; 46 } 47 48 49