rendered paste body#include <iostream>using namespace std;class Queue{ private: struct Node { Node (int data, Node* next) : mydata(data), mynext(next) {} int mydata; Node *mynext; }; public: Queue() : myfront(NULL), myback(NULL) {} ~Queue(); int front() const; int back() const; bool is_empty() const; void enqueue(const int); void dequeue(); void Filter(int); void callFilter(); //Calles the filter function private: Node* myfront; Node* myback; };/* Implementation of member functions */Queue :: ~Queue(){ if (myfront == NULL) return; for (Node *p = myfront->mynext; p; p=p->mynext) delete myfront;}int Queue :: front() const{ return myfront->mydata;}int Queue :: back () const{ return myback->mydata;}bool Queue :: is_empty () const{ return bool(myfront == NULL);}void Queue::callFilter(){ int value, count; count = 0; cout << "Please enter the value that you wish to search for(anything other than 0: "; cin >> value; while (count < 10) if (value > 0) { Filter(value); break; } else { cout << "Please enter a new value you have " << 10-count << " chances left: "; cin >> value; count++; }} void Queue::Filter(int A) { int B, C, count; Node *p=myback; B=front(); C=B; // to remeber the first value // cout<<B<<endl; // cout<<C<<endl; cout << A << endl; while(A != front()) { p=p->mynext; int d=myfront->mydata; delete myfront; myfront=p;//the dequeue if (front()==A) break; Node *p=new Node(B, NULL);//the enqueue if (myback == NULL){ myback=p; myfront=p; } else { p->mynext=myback; myback=p; } B=front(); if(front()==C) break; dequeue(); } while(front()!=C) { p=p->mynext; B=myfront->mydata; delete myfront; myfront=p; enqueue(B); B=front(); }}void Queue :: enqueue(const int d){ Node *p=new Node(d, NULL); if (myback == NULL){ myback=p; myfront=p; } else { p->mynext=myback; myback=p; } cout<<"Item entered into the queue: " <<myback->mydata<<endl;}void Queue :: dequeue(){ Node *p=myback; if (is_empty()) cout << "Queue empty: Nothing to delete"<<endl; else { if (myback==myfront){ cout<<"Item removed from queue: " <<myback->mydata<<endl; delete myback; myback=NULL; myfront=NULL; } while(p->mynext != myfront) p=p->mynext; int d=myfront->mydata; cout << "Item removed from queue: " << d << endl; delete myfront; myfront=p; }}main() /* A test-drive for queue */{ Queue q; q.enqueue(45); q.enqueue(56); q.enqueue(32); q.enqueue(89); q.enqueue(12); q.callFilter(); q.dequeue(); q.dequeue(); q.dequeue(); q.dequeue(); q.dequeue();}