Question: new.h #ifndef LIST_H_INCLUDED #define LIST_H_INCLUDED #include #include using namespace std; template class ListNode { public: T value; ListNode *next; ListNode(T v, ListNode *n = NULL)

 new.h #ifndef LIST_H_INCLUDED #define LIST_H_INCLUDED #include #include using namespace std; template

new.h

#ifndef LIST_H_INCLUDED #define LIST_H_INCLUDED #include  #include  using namespace std; template  class ListNode { public: T value; ListNode *next; ListNode(T v, ListNode *n = NULL) { value = v; next = n; } }; template  class List { private: ListNode *head, *tail; int listSize; public: List() { head = tail = NULL; listSize = 0; } List(const List &other); const List & operator=(const List& other); ~List(); bool insertAtFront(T); bool insertSecond(T); bool insertAtEnd(T); bool deleteFromFront(); T getFront() const; bool isEmpty() const { return listSize == 0; } int getSize() const { return listSize; } void display(ostream &) const; }; template  class Stack: public List { public: bool push(T value) { return List::insertAtFront(value); } bool pop() { return List::deleteFromFront(); } T top() const { return List::getFront(); } }; template  class Queue : public List { public: bool enqueue(T v) { return insertAtEnd(v); } bool dequeue() { return List::deleteFromFront(); } T front() { return List::getFront(); } }; template  List::List(const List &other) { listSize = other.listSize; if (listSize == 0) { head = tail = NULL; } else { head = tail = new ListNode(other.head->value, NULL); ListNode *temp = other.head->next; while (temp != NULL) { tail->next = new ListNode(temp->value, NULL); tail = tail->next; temp = temp->next; } } } template  const List & List::operator=(const List &other) { while (head != NULL) { tail = head; head = head->next; delete tail; } listSize = other.listSize; if (listSize == 0) { head = tail = NULL; } else { head = tail = new ListNode(other.head->value, NULL); ListNode *temp = other.head->next; while (temp != NULL) { tail->next = new ListNode(temp->value, NULL); tail = tail->next; temp = temp->next; } } return other; } template  List::~List() { while (head != NULL) { tail = head; head = head->next; delete tail; } } template  bool List::insertAtFront(T v) { ListNode *temp = new ListNode(v, head); if (temp == NULL) return false; head = temp; if (tail == NULL) tail = head; listSize++; return true; } template  bool List::insertSecond(T v) { if (head == NULL) return false; ListNode *temp = new ListNode(v, head->next); if (temp == NULL) return false; head->next = temp; if (tail == head) tail = temp; listSize++; return true; } template  bool List::insertAtEnd(T v) { ListNode *temp = new ListNode(v, NULL); if (head == NULL) head = temp; else tail->next = temp; tail = temp; listSize++; return true; } template  bool List::deleteFromFront() { ListNode *temp = head; if (head == NULL) return false; if (tail == head) tail = NULL; head = head->next; delete temp; listSize--; return true; } template  T List::getFront() const { if (head == NULL) { cout value; } template  void List::display(ostream &os) const { os  "; ListNode *temp = head; while (temp != NULL) { os value  "; temp = temp->next; } os  ostream & operator &theList) { theList.display(os); return os; } #endif // LIST_H_INCLUDED 

Modifying new class. Given the header file new hfor the template class new". Add a method to the class for reversing the elements on the list, noting the following Plan the implementation first do not just jump into the program Do not delete nodes or create new ones use the existing ones. Do not modify the values in the nodes just modify the pointers instead. Make sure the head and tail pointers and count are correctly updated. Make sure your implementation works for empty lists, as well as those with only one node. Then show a test program that inserts integers into your list, displays it, reverses it, and displays the result ustrate the ability to reverse an empty list, reverse a single node list, and reverse larger lists and display them

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!