Iterators
Start with the DoublyLinkedNode template class that we developed in the tutorial 7. Definea bi-directional list iterator for doubly-linked lists that satisfies the following template classspecification:#pragma once#include “DoublyLinkedNode.h”templateclass DoublyLinkedNodeIterator private:enum IteratorStates BEFORE, DATA , AFTER ;IteratorStates fState;typedef DoublyLinkedNode Node;const Node* fLeftmost;const Node* fRightmost;const Node* fCurrent;public:typedef DoublyLinkedNodeIterator Iterator;DoublyLinkedNodeIterator( const Node& aList );const DataType& operator*() const; // […]