File name: a2.cpp Task For this assignment, you are required to either A) modify your linked list code to implement a queue or B) modify the provided stack code to implement a queue. Your program should implement a C++ queue class with the following member functions: - Void enq(int) - Void deq() - Void front() - Bool isEmpty() - Void printq() Your program will take in a command file called “cmd.txt” which will instruct your program what operations to run File Format <0 or 1 arguments> Commands - 1 enq - 2 deq - 3 front - 4 isEmpty - 5 printq Example File 1 1 5 1 2 5 1 3 5 1 4 5 3 2 5 2 5 3 Expectations You should not use any already pre implemented code for your queue such as a standard library object Your code should be well formatted with proper spacing and proper naming Your code should have well named variables. No a’s b’s or c’s as names unless it is for something like a loop counter Your code should have the same output formatting you see below Your code MUST follow the formatting you see below Your file MUST be named a2.cpp My example file does not contain all possible test cases it is up to you to determine any other special cases to test your program against. Example Output //LinkedList class #include #include #include #include #include using namespace std; struct Node { int data; Node *next; }; class LinkedList { private: Node *head; Node *tail; public: LinkedList(); //constructor void prepend(int num); void append(int num); void removeFront(); void removeBack(); void remove(int num); int search(int num); void printList(); }; //constructor LinkedList::LinkedList() { head=NULL; tail=NULL; } //prepend() method void LinkedList::prepend(int num) { //allocate space for new node Node *node=new Node; //populate node node->data=num; node->next= NULL; //attach new node to start of list //if linked list empty if(head==NULL) { head=node; tail=node; } else //linked list not empty { node->next=head; head=node; } } //append() method void LinkedList::append(int num) { //allocate space for new node Node *node=new Node; //populate node node->data=num; node->next= NULL; //attach new node to end of list //if linked list empty if(head==NULL) { head=node; tail=node; } else //linked list not empty { tail->next=node; tail=node; } } //removeFront() method void LinkedList::removeFront() { //if linked list empty, then underflow if(head==NULL) { cerr<<\"Underflow\"<next; //delete node cout<<\"Removing \"<data<<\" from the list\"<next!=NULL) { /*if(curr==tail) break;*/ prev=curr; curr=curr->next; } prev->next=NULL; tail=prev; //delete node cout<<\"Removing \"<data<<\" from the list\"<data=num) break; prev=curr; curr=curr->next; } //preserve node Node *temp=curr; //detach node from linked list prev->next=curr->next; //delete node cout<<\"Removing \"<data<<\" from the list\"<data=num) { found=1; //num found break; } curr=curr->next; } return found; } //printList() method void LinkedList::printList() { //traverse linked list Node *curr=head; while(curr!=NULL) { c.