Q). Implement Queue using struct in c++
=> Prog :
#include<iostream>
#include<iomanip>
using namespace std;
#define MAX 5
typedef struct queue_type{
int arr[MAX]={0,0,0,0,0};
int frontSide;
int rearSide;
}node;
void insertVal(int item,node * ptr);
int deleteVal(node *ptr);
void display(node *ptr);
int main(){
char ch;
int choice,item;
node queueNode;
queueNode.frontSide=-1;
queueNode.rearSide=-1;
do{
cout<<"\n************* please press below key for that option *************\n\n";
cout<<"1.Insert Value in Queue \n";
cout<<"2.Delete Value in Queue \n";
cout<<"3.Display \n";
cout<<"choice : ";
cin>>choice;
switch(choice){
case 1: cout<<"Enter the data : ";
cin>>item;
insertVal(item,&queueNode);
break;
case 2: item=deleteVal(&queueNode);
cout<<"Pop element : "<<item<<endl;
break;
case 3: display(&queueNode);
break;
default : cout<<"Wrong option selected\n";
}
cout<<"\n\nDo you want to run again (y/n) : ";
cin>>ch;
}while(ch=='y');
}
void insertVal(int item,node * ptr){
if((ptr->frontSide==0 && ptr->rearSide==MAX-1) || (ptr->frontSide==ptr->rearSide+1)){
cout<<"Queue is Overflow\n";
}else if(ptr->frontSide==-1){
ptr->frontSide=0;
ptr->rearSide=0;
}else if(ptr->rearSide==MAX-1){
ptr->rearSide=0;
}else{
ptr->rearSide=ptr->rearSide+1;
}
ptr->arr[ptr->rearSide]=item;
}
int deleteVal(node *ptr){
int item;
if(ptr->frontSide==-1){
cout<<"Queue is underflow\n";
}else{
item=ptr->arr[ptr->frontSide];
ptr->arr[ptr->frontSide]=0;
if(ptr->frontSide==ptr->rearSide){
ptr->frontSide=-1;
ptr->rearSide=-1;
}else if(ptr->frontSide==MAX-1){
ptr->frontSide=0;
}else{
ptr->frontSide++;
}
}
return item;
}
void display(node *ptr){
cout<<"\n\n ********************* Queue Status ******************** \n\n";
cout<<setw(8)<<"_";
for(int i=1;i<=6;i++){
cout<<setw(8)<<"________";
}
cout<<endl<<endl;
cout<<setw(8)<<" ";
for(int i=1;i<=5;i++){
if(i==5){
if(ptr->arr[i-1]==0){
cout<<setw(4)<<" ";
}else{
cout<<setw(4)<<" "<<ptr->arr[i-1];
}
}else{
if(ptr->arr[i-1]==0){
cout<<setw(4)<<" "<<setw(4)<<"|";
}else
{
cout<<setw(4)<<" "<<ptr->arr[i-1]<<setw(4)<<"|";
}
}
}
cout<<endl;
cout<<setw(8)<<"_";
for(int i=1;i<=6;i++){
cout<<setw(8)<<"________";
}
cout<<endl<<endl;
cout<<setw(8)<<"Index :";
for(int i=1;i<=5;i++){
cout<<setw(4)<<" "<<i<<setw(5)<<" ";
}
if((ptr->frontSide==0 && ptr->rearSide==MAX-1) || (ptr->frontSide==ptr->rearSide+1)){
cout<<endl<<endl;
cout<<setw(40)<<"Status : FULL"<<endl;
}
if(ptr->frontSide==-1){
cout<<endl<<endl;
cout<<setw(40)<<"Status : EMPTY"<<endl;
}
}
Comments
Post a Comment