First commit
commit
01be5ed038
@ -0,0 +1,63 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
typedef struct {
|
||||
void** data;
|
||||
int top_index;
|
||||
int capacity;
|
||||
int curr_size;
|
||||
} Stack;
|
||||
|
||||
Stack* new_stack(int stack_size) {
|
||||
Stack* stack = malloc(sizeof(Stack));
|
||||
stack->capacity = stack_size;
|
||||
stack->data = malloc(stack_size);
|
||||
stack->top_index = 0;
|
||||
stack->curr_size = 0;
|
||||
return stack;
|
||||
}
|
||||
|
||||
void push(Stack* stack,void* element) {
|
||||
if (stack->curr_size >= stack->capacity-1) {
|
||||
stack->data = realloc(stack->data, stack->capacity*2);
|
||||
stack->capacity *= 2;
|
||||
}
|
||||
*(stack->data + stack->top_index) = element;
|
||||
printf("Adding to index %d\n",stack->top_index);
|
||||
stack->top_index++;
|
||||
stack->curr_size++;
|
||||
return;
|
||||
}
|
||||
|
||||
void* pop(Stack* stack) {
|
||||
stack->top_index--;
|
||||
void* to_return = *(stack->data + stack->top_index);
|
||||
*(stack->data + stack->top_index) = NULL;
|
||||
|
||||
stack->curr_size--;
|
||||
|
||||
return to_return;
|
||||
}
|
||||
|
||||
void* peek(Stack* stack) {
|
||||
void* to_return = *(stack->data + stack->top_index - 1);
|
||||
return to_return;
|
||||
}
|
||||
|
||||
int size(Stack* stack) {
|
||||
return (stack->curr_size);
|
||||
}
|
||||
|
||||
void main() {
|
||||
Stack* stack = new_stack(10);
|
||||
int a = 2;
|
||||
int b = 3;
|
||||
int c = 4;
|
||||
push(stack,(void *)&a);
|
||||
push(stack,(void *)&b);
|
||||
push(stack,(void *)&c);
|
||||
printf("%d\n",*( (int *) pop(stack)));
|
||||
printf("%d\n",*( (int *) pop(stack)));
|
||||
printf("%d\n",*( (int *) pop(stack)));
|
||||
// printf("%d\n",size(stack));
|
||||
}
|
Loading…
Reference in New Issue