This is an absolute WTF:
Code:
template <typename T> void
List<T>::swap(Node* x){
	
    Node* temp = x->next;
    x->next = x->prev;
    x->prev = temp;
}
There are some seriously bazaar things in the posted code.
Stop reinventing the standard C++ library!