Q). Implement Stack push and pop function using struct in C++
=>Program :
#include<iostream>
#include<iomanip>
using namespace std;
#define MAX 5
typedef struct stack_node{
int arr[MAX];
int top;
}node;
void push(int item,node *ptr);
int pop(node *ptr);
void display(node *ptr);
int main(){
int item,choice;
char ch;
node myStack;
myStack.top=-1;
do{
cout<<"\n************* please press below key for that option *************\n\n";
cout<<"1.Push Value in stack \n";
cout<<"2.Pop Value in stack \n";
cout<<"3.Display \n";
cin>>choice;
switch(choice){
case 1: cout<<"Enter the data : ";
cin>>item;
push(item,&myStack);
break;
case 2: item=pop(&myStack);
cout<<"Pop element : "<<item<<endl;
break;
case 3: display(&myStack);
break;
default : cout<<"Wrong option selected\n";
}
cout<<"\nDo you want to run again (y/n) : ";
cin>>ch;
}while(ch=='y');
}
void push(int item,node *ptr){
if(ptr->top==MAX-1){
cout<<"\nStack Over Flow \n";
}else{
ptr->top++;
ptr->arr[ptr->top]=item;
cout<<"\nStack Push at "<<ptr->top+1<<" position"<<endl;
}
}
int pop(node *ptr){
int item;
if(ptr->top==-1){
cout<<"\nStack Over Flow \n";
}else{
item=ptr->arr[ptr->top];
cout<<"\nStack Pop at "<<ptr->top+1<<" position"<<endl;
ptr->top--;
}
return item;
}
void display(node *ptr){
cout<<"\n\n ********* Stack Status **********\n\n";
for(int i=MAX;i>0;i--){
if(ptr->top<i-1){
cout<<setw(4)<<i<<setw(4)<<"|"<<setw(8)<<"|"<<endl;
cout<<setw(8)<<"|"<<"_______"<<"|"<<endl;
}else{
cout<<setw(4)<<i<<setw(4)<<"|"<<setw(4)<<ptr->arr[i-1]<<setw(4)<<"|"<<endl;
cout<<setw(8)<<"|"<<"_______"<<"|"<<endl;
}
}
if(ptr->top==MAX-1){
cout<<endl;
cout<<setw(8)<<" "<<"FULL"<<" "<<endl;
}
if(ptr->top==-1){
cout<<endl;
cout<<setw(8)<<" "<<"EMPTY"<<" "<<endl;
}
}
=> Output :
1. Option Sample:
=>Full Stack Sample:
Comments
Post a Comment