class List { private: class Node { public: int data; Node * next; Node (int data, Node *next) { Node::data = data; Node::next = next; } }; Node *head; // Utility method to delete all elements of a list. void deleteList(); // Utility method to copy from one list to another. void copyFrom (const List &otherList); // sub method to return the sum of all values in the list that are greater than value int subSumMoreThan(int value, Node* subHead) const; // sub method to duplicate all even values in the list void subDuplicateEvens(Node* subHead); // sub method to return true if the list is shorter than the other list, false otherwise bool subIsShorterThan(Node* subHead, Node* otherSubHead) const; public: List () { head = NULL; }; List(const List &otherList); // copy constructor ~List (); // outputs list contents to cout void outputList () const; // adds a value to the list void insert (int value); List& operator=(const List &otherList); // operator= // returns the sum of all values in the list that are greater than value int sumMoreThan(int value) const; // duplicates all even values in the list void duplicateEvens(); // returns true if the list is shorter than the other list, false otherwise bool isShorterThan(const List &otherList) const; };