#include "stack.h" bool InitStack(Stack * s) { s->base = (int *) malloc (sizeof(int) * MAXIMUM); if (!s->base) { fprintf(stderr,"Create stack error!\n"); return false; } s->top = s->base; s->size = MAXIMUM; return true; } bool DestroyStack(Stack * s) { if (!s->base){ fprintf(stderr,"Stack not initialize!\n"); return false; } free(s->base); return true; } bool Push(Stack * s, int n) { if (s->top - s->base == s->size) { fprintf(stderr,"Stack is full!\n"); return false; } *s->top++ = n; // *s->top = n; *s->top++; return true; } bool Pop(Stack * s, int * n) { if (s->top == s->base) { fprintf(stderr,"Empty stack!\n"); return false; } *n = *--s->top; // --s->top; *n = *s->top; return true; } int GetTop(Stack * s) { if (s->top != s->base) return *(s->top - 1); return -1; }