#include<stdio.h> int min, curr; int *stack, *top; void createStack(); void push(); void pop(); void traverse(); int main() { int ch; createStack(); printf(“Stack operations :\n”); while(1) { printf(“1.Push \n”); printf(“2.Pop \n”); printf(“3.Display \n”); printf(“4.Quit \n”); printf(“Enter choice : “); scanf(“%d”, &ch); switch(ch) { case 1 : push(); break; case 2 : pop(); break; case 3 : traverse(); break; case 4 : exit(1); default : printf(“Invalid choice\n\n”); } } } void createStack() { printf(“Enter initial size : “); scanf(“%d”, &min); curr = min; stack = (int*)calloc(min, sizeof(int)); if(stack==NULL) { printf(“Stack creation failed\n”); exit(0); } else top = stack; } void push() { int ele; printf(“Enter element to be pushed : “); scanf(“%d” , &ele); if(top==stack+curr) { ++curr; stack=(int*)realloc(stack, curr*sizeof(int)); if(stack==NULL) printf(“Unable to increase the size \n”); else { *top = ele; ++top; printf(“Element pushed…\n”); } } else { *top = ele; ++top; printf(“Element pushed…\n”); } } void pop() { if(stack==top) { printf(“Stack is Empty\n”); } –top; printf(“Popped : %d \n”, *top); if(curr>min) { –curr; stack = (int*)realloc(stack , curr*sizeof(int)); } } void traverse() { if(stack==top) printf(“Stack is Empty\n”); else { int* i; printf(“Stack elements are : \n”); for(i=top-1 ; i>=stack ; i–) { printf(“%d \n”, *i); } } } |