#include #include #include #include typedef struct { int top; int capacity; char *array; } stack; stack *createStack(int c) { stack *Stack = (stack *)malloc(sizeof(stack)); if (!Stack) { return NULL; } Stack->capacity = c; Stack->top = -1; Stack->array = (char *)malloc(Stack->capacity); if (!Stack->array) { free(Stack); return NULL; } return Stack; } bool isfull(stack *s) { return s->top == s->capacity - 1; } bool isempty(stack *s) { return s->top == -1; } int push(stack *s, char v) { if (isfull(s)) { printf("stack overflow"); return -1; } s->array[++s->top] = v; return s->top; } int pop(stack *s) { if (isempty(s)) { printf("empty"); return -1; } return s->array[s->top--]; } void display(stack *s) { for (int i = 0; i <= s->top; i++) { printf("%c", s->array[i]); } } int main() { stack *ms = createStack(3); push(ms, 'a'); push(ms, 'b'); display(ms); }