В addToHead()
вы присваиваете адрес локальной переменной элементу head
вашего списка.После возврата из этой функции локальная переменная уничтожается и к ней нельзя обращаться.
Один из способов исправить это - использовать динамическое выделение для создания нового LinkedNode<E>
:
template <class E>
void LinkedList<E>::addToHead(E e) {
LinkedNode<E> *a = new LinkedNode<E>(e);
if (head == NULL)
head = tail = a;
else {
a->next = head;
head = a;
}
}
Послевыделяя память для этого узла, ваш класс LinkedList
должен также отвечать за освобождение узла (с delete
) в какой-то момент в будущем.