Write a C program to Implementation Stack Using dynamic Array.
#include <stdio.h> #include <stdlib.h> int push(int val, int *c); int pop(int *c); int *stack; int main(){ int *c = malloc(sizeof(int)); stack = malloc(sizeof(int)); *c = 0; int i; for(;;){ printf("1. Push\n2. Pop\n3. Stack\n4. Quit\n>>> "); scanf("%d", &i); if(i == 1){ printf("Value: "); scanf("%d", &i); push(i, c); } else if(i == 2) printf("Value popped: %d\n", pop(c)); else if(i == 3) for(int i = 0; i < *c; i++) printf("%d\n", stack[i]); else break; } free(stack); return 0; } int push(int val, int *c){ int *r; r = realloc(stack, ((*c)+1)*sizeof(int)); if (r == NULL){ free(stack); exit(0); } stack = r; stack[*c] = val; ++(*c); return *c; } int pop(int *c){ if (!(*c)) return -1; int x = stack[(*c)-1]; stack[(*c)-1] = NULL; int *r; printf("%d\n", *c); r = realloc(stack, ((*c)-1)*sizeof(int)); if(r == NULL){ free(stack); exit(0); } --(*c); stack = r; return x; } ```