Double Ended Queue Using Linked List In Data Structure Using C++

Data Structure Using C++

Queue Data Structure

Double Ended Queue Using Linked List

class queue
{
 private:
  node *front;
  node *rear;
 public:
  queue();
  void enqueueAtFront(int );
  void enqueueAtRear(int );
  int dequeueAtFront();
  int dequeueAtRear();
  int getFront();
  int getRear();
  int isEmpty();
};
queue::queue()
{
 front=NULL;
 rear=NULL;
}
void queue::enqueueAtRear(int val)
{
 node* newNode = new node(val);
 if(this->isEmpty()){
  front=newNode;
  rear=newNode;
 }else{  
  rear->setNext(newNode);
     rear = newNode;
 } 
}
void queue::enqueueAtFront(int val)
{
 node* newNode = new node(val);
 if(this->isEmpty()){
  front=newNode;
  rear=newNode;
 }else{ 
  newNode->setNext(front);
     front = newNode;
 } 
}
int queue::dequeueAtRear()
{
 if(!isEmpty()){
     int x = rear->get();
  node *ptr;
  ptr=front;
  while(ptr->getNext()!=rear)
  {
   ptr=ptr->getNext();
  }
     ptr->setNext(NULL);
     rear=ptr;
     return x;  
 } 
}
int queue::dequeueAtFront()
{ 
 if(!isEmpty()){
     int x = front->get();
     front = front->getNext();
     return x;  
 }
}
int queue::getFront()
{
 if(!isEmpty())
 {
  return front->get();
 }
 else
 {
  cout<<"queue is empty."<<endl;
 }
}
int queue::getRear()
{
 if(!isEmpty())
 {
  return rear->get();
 }
 else
 {
  cout<<"queue is empty."<<endl;
 }
}
int queue::isEmpty()
{
 return (front==NULL);
}
int main ()
{
 queue q;
 q.enqueueAtRear(2);
 cout<<q.getFront()<<endl;
 q.enqueueAtFront(5);
 cout<<q.getFront()<<endl;
 q.enqueueAtFront(6);
 cout<<q.getFront()<<endl;
 q.dequeueAtRear();
 cout<<q.getRear()<<endl;
 q.dequeueAtFront();
 cout<<q.getFront()<<endl; 
}


Let me know in the comment section if you have any question.

Previous Post:
Priority Queue Using Linked List In Data Structure Using C++

Comments