+ return firstPtr->getData();
+}
+
+template<class T>
+T *List<T>::insertAtBack(T *&value )
+{
+ ListNode<T> *newPtr = getNewNode(*value);
+
+ if (isEmpty())
+ {
+ firstPtr = lastPtr = newPtr;
+ }
+ else
+ {
+ newPtr->prev = lastPtr;
+ lastPtr->next = newPtr;
+ lastPtr = newPtr;
+ }
+ return lastPtr->getData();