rendered paste body// queue.cpp// // Source: class notes w/ additions#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() : count(0), myfront(NULL), myback(NULL){} // added count initializer ~Queue(); int front() const; int back() const; bool is_empty() const; void enqueue(const int); void dequeue(); bool Filter(int); void callFilter(); //Calls the filter function // added (begin) int front_and_dequeue(); int count; // added (end) 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 :: enqueue(const int d){ Node *p=new Node(d, NULL); if (myback == NULL){ myback=p; myfront=p; } else { p->mynext=myback; myback=p; } // added (begin) count++; // added (end) 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; } count--;}// added (begin)int Queue :: front_and_dequeue() { int retval = front(); dequeue(); return retval;}// added (end)void Queue::callFilter(){ int value, Try; Try = 0; cout << "Please enter the value that you wish to search for(anything other than 0: "; cin >> value; while (Try < 10) if (value > 0) { Filter(value); break; } else { cout << "Please enter a new value you have " << 10-Try << " chances left: "; cin >> value; Try++; }}bool Queue::Filter(int A){ int B, C, exit, c; c = 0; B = front(); C = B; //to remeber the first value exit = 0; while(exit == 0){ if (front() == A){ dequeue(); exit = 1; break; } else { enqueue(front_and_dequeue()); c += 1; } } for (int i=0; i < count - c; i++)//get back to the original front { enqueue(front_and_dequeue()); }}main() /* A test-drive for queue */{ Queue q; q.enqueue(45); q.enqueue(56); q.enqueue(32); q.enqueue(12); q.enqueue(89); q.callFilter(); q.dequeue(); q.dequeue(); q.dequeue(); q.dequeue(); q.dequeue();}