#include <stdlib.h>
#include <stdio.h>
typedef struct {
int size;
int *stack_array;
}stack;
void newStack(stack *a) {
a->size = 0;
a->stack_array = malloc(sizeof(int) * 1);
}
void push(stack *a, int x) {
int *new_array = malloc(sizeof(int) * a->size);
int i;
for(i=0; i < a->size; i++) {
new_array[i] = a->stack_array[i];
}
new_array[i] = x;
a->stack_array = new_array;
a->size += 1;
}
int pop(stack *a) {
if(a->size <= 0) {
printf("CALL POP() WITH FILLED STACK");
exit(1);
}
int *new_array = malloc(sizeof(int) * (a->size)-1);
int i;
for(i=0; i < a->size-1; i++) {
new_array[i] = a->stack_array[i];
}
int popped = a->stack_array[i];
a->stack_array = new_array;
a->size -= 1;
return popped;
}
void printStack(stack *a) {
int i;
printf("{");
for(i=0; i<a->size-1; i++) {
printf("%d, ", (a->stack_array)[i]);
}
printf("%d}\n", (a->stack_array)[i]);
}
int main (void) {
stack a;
newStack(&a);
push(&a, 6);
push(&a, 12);
push(&a, 13);
printStack(&a);
printf("Popped: %d\n", pop(&a));
printStack(&a);
return 0;
}