Да се разработи шаблонен клас List, който да реализира едносвързан списък. Като модел да се използва класът List от примера https://github.com/lchorbadjiev/teach2013-2014/blob/master/36/list.cc.
За разлика от примера вашият клас трябва да поддържа указатели както към началото head_, така и към края (последният елемент) на списъка tail_.
Класът трябва да поддържа следните операции:
1) добавяне на елементи в началото и в края на списъка. Методи
void push_front() void push_back()
2) изтриване на елементи в началото и в края на списъка. Методи
void pop_front() void pop_back()
3) Четене на стойността на елемент в началото и в края на списъка. Методи
const T& front() const; T& front(); const T& back() const; T& back();
4) Копиращ конструктор и оператор за присвояване.
5) Деструктор.
6*) (Само за ентусиасти): Итератор за дефинираният клас с поддръжка на минималният набор от операции. За пример може да се ползва реализацията в https://github.com/lchorbadjiev/teach2013-2014/blob/master/22/list.cc.