diff options
author | thing1 <thing1@seacrossedlovers.xyz> | 2025-01-31 16:22:52 +0000 |
---|---|---|
committer | thing1 <thing1@seacrossedlovers.xyz> | 2025-01-31 16:22:52 +0000 |
commit | 45b06ac98819bfcad5f490c580d25fb0bf90c8ad (patch) | |
tree | 4f00b8a96847bccc605eea0e7154a3bd36a2fb5a /comp/work/42/rpn/stack.c | |
parent | 00e419fa183247d6d94b7eaf274bd2ae6225c646 (diff) | |
parent | 02653ab40d93fb7e6d07edb747fe0e07c5d60c74 (diff) |
performing merge
Merge branch 'master' of git://git.seacrossedlovers.xyz/school
Diffstat (limited to 'comp/work/42/rpn/stack.c')
-rw-r--r-- | comp/work/42/rpn/stack.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/comp/work/42/rpn/stack.c b/comp/work/42/rpn/stack.c new file mode 100644 index 0000000..0311404 --- /dev/null +++ b/comp/work/42/rpn/stack.c @@ -0,0 +1,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; +} + |