#include #include using namespace std; class list { int leng; public: class element { public: friend class list_iterator; int data; element *next; element *prev; element() { next = 0; prev = 0; } }; element *begin, *end; list () { leng = 0; begin = end = new element; } void AddElement (int znach) { element *el = new element; end->data=znach; end -> next = el; el -> prev = end; end = el; leng++; } int getlen() { return (leng); } }; class list_iterator { list *p; list::element *e; int t; public: friend class list; list_iterator (list &l): p(&l), e(p->begin){} int gotonext() { if (e->next != 0) { t=e->data; e=e->next; return t; } else return (e->data); } int gotoprev() { if (e->prev != 0) { e=e->prev; return e->data; } else return e->data; } int gotoend() { e = p->end; return e->data; } int gotobegin() { e = p->begin; return e->data; } void ChZn(int zn) { e->data = zn; return; } int getlen_iter() { int leng=0; list::element *poisk; poisk = p->begin; while (poisk->next != 0) { poisk = poisk->next; leng++;} return leng; } }; int main() { list l; list_iterator b_to_e(l); list_iterator e_to_b(l); int data, leng; cout<<"Let's add some elements to list (0 = quit):"<>data; l.AddElement(data); } while (data != 0); leng = b_to_e.getlen_iter(); cout <<"Length of list is "<