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