Skip to main content

Queue using C++(Struct)

 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;

        }


}


=>Output :

1.Queue Sample Full :





2.Empty Queue Sample :

 

Comments