Stack PUSH & POP Implementation using Arrays


Levels of difficulty: / perform operation:

C Program

#include<stdio.h>
#include<conio.h>
#define MAX 5
int top, status;
/*PUSH FUNCTION*/
void push (int stack[], int item) {
	if (top == (MAX-1))
		status = 0; else {
		status = 1;
		++top;
		stack [top] = item;
	}
}
/*POP FUNCTION*/
int pop (int stack[]) {
	int ret;
	if (top == -1) {
		ret = 0;
		status = 0;
	} else {
		status = 1;
		ret = stack [top];
		--top;
	}
	return ret;
}
/*FUNCTION TO DISPLAY STACK*/
void display (int stack[]) {
	int i;
	printf ("\nThe Stack is: ");
	if (top == -1)
		printf ("empty"); else {
		for (i=top; i>=0; --i)
			   printf ("\n--------\n|%3d   |\n--------",stack[i]);
	}
	printf ("\n");
}
/*MAIN PROGRAM*/
void main() {
	int stack [MAX], item;
	int ch;
	clrscr ();
	top = -1;
	do {
		do {
			printf ("\NMAIN MENU");
			printf ("\n1.PUSH (Insert) in the Stack");
			printf ("\n2.POP  (Delete) from the Stack");
			printf ("\n3.Exit (End the Execution)");
			printf ("\nEnter Your Choice: ");
			scanf  ("%d", &ch);
			if (ch<1 || ch>3)
				       printf ("\nInvalid Choice, Please try again");
		}
		while (ch<1 || ch>3);
		switch (ch) {
			case 1:
					printf ("\nEnter the Element to be pushed : ");
			scanf  ("%d", &item);
			printf (" %d", item);
			push (stack, item);
			if (status) {
				printf ("\nAfter Pushing ");
				display (stack);
				if (top == (MAX-1))
							printf ("\nThe Stack is Full");
			} else
					    printf ("\nStack overflow on Push");
			break;
			case 2:
					item = pop (stack);
			if (status) {
				printf ("\nThe Popped item is %d.  After Popping: ");
				display (stack);
			} else
					     printf ("\nStack underflow on Pop");
			break;
			default:
					printf ("\nEND OF EXECUTION");
		}
	}
	while (ch != 3);
	getch();
}