Implementation of Stack to perform Push, Pop and Display operations on C language

 Definition of Stack

A Stack is defined as a special type of data structure where items are inserted from one end called top of stack and items are deleted from the same end. Here, the last item inserted will be on the top of the stack. Since, deletion is done from the same end, last item inserted is the first item to be deleted out from the Stack and so, Stack is also called Last In First Out (LIFO) data structure.

Operations on Stack

  • Push Operation (Insertion)
  • Pop Operation (Deletion)
  • Display Operation

The code below shows the implementation of Stack to perform Push, Pop and Display operations on C language

/* Write a C program to implement stack. Stack is a LIFO data strcuture    *
 * LIFO - Last in First Out                                                *
 * Perform PUSH(insert operation), POP(Delete operation) and Display stack */
#include <stdio.h>
#include <conio.h>
#define MAXSIZE 5

struct stack            /* Structure definition for stack */
{
	int stk[MAXSIZE];
	int top;
};

typedef struct stack STACK;
STACK s;

/* Function declaration/Prototype*/

void push (void);
int  pop(void);
void display (void);

void main ()
{
	int choice;
	int option = 1;

	clrscr ();

	s.top = -1;

	printf ("STACK OPERATION\n");
	while (option)
	{
		printf ("------------------------------------------\n");
		printf ("  	1	-->	PUSH	           \n");
		printf ("  	2	-->	POP	           \n");
		printf ("  	3	-->	DISPLAY	           \n");
		printf ("  	4	-->	EXIT		   \n");
		printf ("------------------------------------------\n");

		printf ("Enter your choice\n");
		scanf	("%d", &choice);

		switch (choice)
		{
			case 1: push();
				break;
			case 2:	pop();
				break;
			case 3:	display();
				break;
			case 4:	return;
		}

		fflush (stdin);
		printf ("Do you want to continue(Type 0 or 1)?\n");
		scanf	("%d", &option);
	}
}

/*Function to add an element to the stack*/
void push ()
{
	int num;
	if (s.top == (MAXSIZE - 1))
	{
		printf ("Stack is Full\n");
		return;
	}
	else
	{
		printf ("Enter the element to be pushed\n");
		scanf ("%d", &num);
		s.top = s.top + 1;
		s.stk[s.top] = num;
	}
	return;
}

/*Function to delete an element from the stack*/
int pop ()
{
	int num;
	if (s.top == - 1)
	{
		printf ("Stack is Empty\n");
		return (s.top);
	}
	else
	{
		num = s.stk[s.top];
		printf ("poped element is = %d\n", s.stk[s.top]);
		s.top = s.top - 1;
	}
	return(num);
}

/*Function to display the status of the stack*/
void display ()
{
	int i;
	if (s.top == -1)
	{
		printf ("Stack is empty\n");
		return;
	}
	else
	{
		printf ("\nThe status of the stack is\n");
		for (i = s.top; i >= 0; i--)
		{
			printf ("%d\n", s.stk[i]);
		}
	}
	printf ("\n");
}

/*---------------------------------------------------------------------------
Output
STACK OPERATION
------------------------------------------
	1       -->     PUSH
        2       -->     POP
	3       -->     DISPLAY
        4       -->     EXIT
------------------------------------------
Enter your choice
1
Enter the element to be pushed
23
Do you want to continue(Type 0 or 1)?
1
------------------------------------------
	1       -->     PUSH
        2       -->     POP
	3       -->     DISPLAY
        4       -->     EXIT
------------------------------------------
Enter your choice
1
Enter the element to be pushed
45
Do you want to continue(Type 0 or 1)?
1
------------------------------------------
		  1       -->     PUSH
                  2       -->     POP
		  3       -->     DISPLAY
                  4       -->     EXIT
------------------------------------------
Enter your choice
1
Enter the element to be pushed
78
Do you want to continue(Type 0 or 1)?
1
------------------------------------------
        1       -->     PUSH
        2       -->     POP
	3       -->     DISPLAY
        4       -->     EXIT
------------------------------------------
Enter your choice
3

The status of the stack is
78
45
23

Do you want to continue(Type 0 or 1)?
1
------------------------------------------
        1       -->     PUSH
	2       -->     POP
        3       -->     DISPLAY
        4       -->     EXIT
------------------------------------------
Enter your choice
2
poped element is = 78
Do you want to continue(Type 0 or 1)?
1
------------------------------------------
        1       -->     PUSH
	2       -->     POP
        3       -->     DISPLAY
        4       -->     EXIT
------------------------------------------
Enter your choice
3

The status of the stack is
45
23

Do you want to continue(Type 0 or 1)?
0
-----------------------------------------------------------------------------*/

If you find some error on this program, Please leave as comment.

 

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>