As I have said already it seems that you defined single linked list. That is each Node has a reference to a next element but has no reference to a previos element. As it seen from your code there is member next of type Node<T> but I do not see something as member prev. Without a reference to the previous element in a given position inside your list it is impossible to print list in reverse order.
As I have already explained you cannot print your list iin reverse order because each node in your list knows nothing about its previous node. You can travers your list only in one direction.
You should define a double linled list that to be able to print its element in reverse order.
You can print a singly linked list in reverse order using recursion.
Hint: You can get it to work by making a minor modification to your listContents function (you can pass in the head as usual). Think of where you print the node's data.
1 2 3 4 5 6 7 8 9 10 11 12 13
//make a minor modification to this function to print
//the singly linked list in reverse order. Think of where
//you print the node's data.
template< typename T >
void LinkedList<T>::listReverseContents(Node<T> * head)
{
if (head == NULL) return;
else
{
cout << head->data << " -> ";
listContents( head -> next );
}
}