1: // Created by Frank M. Carrano and Timothy M. Henry. 2: // Copyright (c) 2017 Pearson Education, Hoboken, New Jersey. 4: // Listing C7-2. 6: #include "LinkedIterator.h" 8: template <class ItemType> 9: LinkedIterator<ItemType>:: 10: LinkedIterator(std::shared_ptr<LinkedList<ItemType>> someList, 11: std::shared_ptr<Node<ItemType>> nodePtr) 12: : containerPtr(someList), currentItemPtr(nodePtr) 13: { 14: } // end constructor 16: template <class ItemType> 17: const ItemType LinkedIterator<ItemType>::operator*() 18: { 19: return currentItemPtr->getItem(); 20: } // end operator* 22: template <class ItemType> 23: LinkedIterator<ItemType> LinkedIterator<ItemType>::operator++() 24: { 25: currentItemPtr = currentItemPtr->getNext(); 26: return *this; 27: } // end prefix operator++ 29: template <class ItemType> 30: bool LinkedIterator<ItemType>::operator==(const LinkedIterator<ItemType>& rightHandSide) const 31: { 32: return ((containerPtr == rightHandSide.containerPtr) && 33: (currentItemPtr == rightHandSide.currentItemPtr)); 34: } // end operator== 36: template <class ItemType> 37: bool LinkedIterator<ItemType>::operator!=(const LinkedIterator<ItemType>& rightHandSide) const 38: { 39: return ((containerPtr != rightHandSide.containerPtr) || 40: (currentItemPtr != rightHandSide.currentItemPtr)); 41: } // end operator!=