/* * linked_list.cpp * * Created on: 6.11.2015 г. * Author: trifon */ #include using namespace std; #include "list.h" template struct LinkedListElement { T data; LinkedListElement* next; LinkedListElement(T _data = T(), LinkedListElement* _next = NULL) : data(_data), next(_next) {} }; template class LinkedListIterator : public Iterator { LinkedListElement* p; public: LinkedListIterator(LinkedListElement* _p = NULL) : p(_p) {} // придвижва итератора напред и връща старата позиция Iterator operator++(int) { LinkedListIterator copy = *this; operator++(); return copy; } // придвижва итератора напред и връща новата позиция Iterator& operator++() { if (p != NULL) p = p->next; return *this; } // придвижва итератора назад и връща старата позиция Iterator operator--(int) { // не можем да се връщаме назад!!! return LinkedListIterator(); } // придвижва итератора назад и връща новата позиция Iterator& operator--() { // не можем да се връщаме назад!!! return *this; } // достъп до елемент T& operator*() const { // ВНИМАНИЕ: итераторът трябва да е валиден! return p->data; } // проверка за валидност operator bool() const { return p != NULL; } };