school

thing1's amazing school repo
Log | Files | Refs | Submodules | README

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