This is a C Program to Implement Stack Operations using Dynamic Memory Allocation.
This program implements stack operations using dynamic memory allocation.
1. Use malloc function to allocate memory.
2. Define separate functions for the operations like push, pop and display.
3. Use switch statement to access these functions.
Here is source code of the C Program to Implement Stack Operations using Dynamic Memory Allocation. The C program is successfully compiled and run on a Linux system. The program output is also shown below.
/*
* C Program to Implement Stack Operations using Dynamic Memory
* Allocation
*/
#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node *link;
}*top = NULL;
#define MAX 5
// function prototypes
void push();
void pop();
void empty();
void stack_full();
void stack_count();
void destroy();
void print_top();
void main()
{
int choice;
while (1)
{
printf("1. push an element \n");
printf("2. pop an element \n");
printf("3. check if stack is empty \n");
printf("4. check if stack is full \n");
printf("5. count/display elements present in stack \n");
printf("6. empty and destroy stack \n");
printf("7. Print top of the stack \n");
printf("8. exit \n");
printf("Enter your choice \n");
scanf("%d",&choice);
switch (choice)
{
case 1:
push();
break;
case 2:
pop();
break;
case 3:
empty();
break;
case 4:
stack_full();
break;
case 5:
stack_count();
break;
case 6:
destroy();
break;
case 7:
print_top();
break;
case 8:
exit(0);
default:
printf("wrong choice\n");
}
}
}
// to insert elements in stack
void push()
{
int val,count;
struct node *temp;
temp = (struct node*)malloc(sizeof(struct node));
count = st_count();
if (count <= MAX - 1)
{
printf("\nEnter value which you want to push into the stack :\n");
scanf("%d",&val);
temp->data = val;
temp->link = top;
top = temp;
}
else
printf("WARNING: STACK FULL\n");
}
// to delete elements from stack
void pop()
{
struct node *temp;
if (top = = NULL)
printf("**Stack is empty**\n");
else
{
temp = top;
printf("Value popped out is %d \n",temp->data);
top = top->link;
free(temp);
}
}
// to check if stack is empty
void empty()
{
if (top == NULL)
printf("STACK IS EMPTY\n");
else
printf("elements are present, stack is not empty \n");
}
// to check if stack is full
void stack_full()
{
int count;
count = st_count();
if (count = = MAX)
{
printf("stack is full\n");
}
else
printf("stack is not full \n");
}
// to count the number of elements
void stack_count()
{
int count = 0;
struct node *temp;
temp = top;
while (temp! = NULL)
{
printf(" %d\n",temp->data);
temp = temp->link;
count++;
}
printf("size of stack is %d \n",count);
}
int st_count()
{
int count = 0;
struct node *temp;
temp = top;
while (temp! = NULL)
{
temp = temp->link;
count++;
}
return count;
}
// to empty and destroy the stack
void destroy()
{
struct node *temp;
temp = top;
while (temp! = NULL)
{
pop();
temp = temp->link;
}
printf("stack destroyed\n");
}
// to print top element of stack
void print_top()
{
if (top == NULL)
printf("\n**Top is not available for an EMPTY stack**\n");
else
printf("\nTop of the stack is %d \n",top->data);
}
1. Ask the user for the operations like push, pop, display etc.
2. According to the entered option access the respective functions. Use switch statement to access the functions.
3. Use structure with a data and a pointer as the data module. Use malloc function to assign the memory dynamically.
4. In the push() function ask the user to enter the number to be inserted and store it in the variable val.
5. Copy the value to the new data module’s data.
6. In the pop() function delete the element at the top.
7. In the display() function using for loop display all the data starting from top to the bottom.
1. push an element 2. pop an element 3. check if stack is empty 4. check if stack is full 5. count/display elements present in stack 6. empty and destroy stack 7. Print top of the stack 8. exit Enter your choice 5 size of stack is 0 1. push an element 2. pop an element 3. check if stack is empty 4. check if stack is full 5. count/display elements present in stack 6. empty and destroy stack 7. Print top of the stack 8. exit Enter your choice 2 **Stack is empty** 1. push an element 2. pop an element 3. check if stack is empty 4. check if stack is full 5. count/display elements present in stack 6. empty and destroy stack 7. Print top of the stack 8. exit Enter your choice 3 STACK IS EMPTY 1. push an element 2. pop an element 3. check if stack is empty 4. check if stack is full 5. count/display elements present in stack 6. empty and destroy stack 7. Print top of the stack 8. exit Enter your choice 7 **Top is not available for an EMPTY stack** 1. push an element 2. pop an element 3. check if stack is empty 4. check if stack is full 5. count/display elements present in stack 6. empty and destroy stack 7. Print top of the stack 8. exit Enter your choice 1 Enter value which you want to push into the stack : 10 1. push an element 2. pop an element 3. check if stack is empty 4. check if stack is full 5. count/display elements present in stack 6. empty and destroy stack 7. Print top of the stack 8. exit Enter your choice 1 Enter value which you want to push into the stack : 20 1. push an element 2. pop an element 3. check if stack is empty 4. check if stack is full 5. count/display elements present in stack 6. empty and destroy stack 7. Print top of the stack 8. exit Enter your choice 1 Enter value which you want to push into the stack : 30 1. push an element 2. pop an element 3. check if stack is empty 4. check if stack is full 5. count/display elements present in stack 6. empty and destroy stack 7. Print top of the stack 8. exit Enter your choice 1 Enter value which you want to push into the stack : 40 1. push an element 2. pop an element 3. check if stack is empty 4. check if stack is full 5. count/display elements present in stack 6. empty and destroy stack 7. Print top of the stack 8. exit Enter your choice 1 Enter value which you want to push into the stack : 50 1. push an element 2. pop an element 3. check if stack is empty 4. check if stack is full 5. count/display elements present in stack 6. empty and destroy stack 7. Print top of the stack 8. exit Enter your choice 5 50 40 30 20 10 size of stack is 5 1. push an element 2. pop an element 3. check if stack is empty 4. check if stack is full 5. count/display elements present in stack 6. empty and destroy stack 7. Print top of the stack 8. exit Enter your choice 4 stack is full 1. push an element 2. pop an element 3. check if stack is empty 4. check if stack is full 5. count/display elements present in stack 6. empty and destroy stack 7. Print top of the stack 8. exit Enter your choice 2 Value popped out is 50 1. push an element 2. pop an element 3. check if stack is empty 4. check if stack is full 5. count/display elements present in stack 6. empty and destroy stack 7. Print top of the stack 8. exit Enter your choice 2 Value popped out is 40 1. push an element 2. pop an element 3. check if stack is empty 4. check if stack is full 5. count/display elements present in stack 6. empty and destroy stack 7. Print top of the stack 8. exit Enter your choice 2 Value popped out is 30 1. push an element 2. pop an element 3. check if stack is empty 4. check if stack is full 5. count/display elements present in stack 6. empty and destroy stack 7. Print top of the stack 8. exit Enter your choice 6 Value popped out is 20 Value popped out is 10 stack destroyed 1. push an element 2. pop an element 3. check if stack is empty 4. check if stack is full 5. count/display elements present in stack 6. empty and destroy stack 7. Print top of the stack 8. exit Enter your choice 1 Enter value which you want to push into the stack : 25 1. push an element 2. pop an element 3. check if stack is empty 4. check if stack is full 5. count/display elements present in stack 6. empty and destroy stack 7. Print top of the stack 8. exit Enter your choice 5 25 size of stack is 1 1. push an element 2. pop an element 3. check if stack is empty 4. check if stack is full 5. count/display elements present in stack 6. empty and destroy stack 7. Print top of the stack 8. exit Enter your choice 8
Sanfoundry Global Education & Learning Series – 1000 C Programs.
Here’s the list of Best Books in C Programming, Data-Structures and Algorithms
- Check Data Structure Books
- Practice Programming MCQs
- Practice Computer Science MCQs
- Practice Design & Analysis of Algorithms MCQ
- Check Computer Science Books