#include #include #include"ex2_stack.h" #define INIT_SZ 2 void init_stack(struct stack * s) { s->size=0; s->data = (int *)malloc(sizeof(int)*INIT_SZ); s->cap=INIT_SZ; } void push(struct stack * s, int data) { if (s->size == s->cap) { int next_size = 2*s->cap; int * tmp = realloc(s->data,next_size*sizeof(int)); if(tmp == NULL) { printf ("Remove items\n"); return; } else { s->cap=s->cap*2; printf(" *** Capacity of stack increased to %d ... \n",s->cap); s->data = tmp; } } s->data[s->size]=data; s->size++; return; } int pop(struct stack * s) { int i = s->data[s->size-1]; s->size--; return i; } void print_stack(const struct stack * s) { int i; if (s->size<=0) printf("\nEmpty Stack\n"); else { printf("\nItems in Stack : "); for ( i=s->size-1; i>=0; i-- ) printf(" %d ",s->data[i]); printf("\n\n"); } return; }