EDIT: I guess I see what your saying. The proper way to do this is to have two classes, though. A node class and a list class. As your code stands, each node represents the start of a new list, this is unnessasary as the head would simply be pointing to itself all the time. Try structuring something like this:
Code:
template <class Type> class list;
template <class Type>
class node {
friend class list<Type>;
public:
// Constructors, Destructors, Accessors and Mutators
private:
node<Type> *next;
node<Type> *prev;
Type data;
};
template <class Type>
class list {
public:
// Constructors, Destructors, Accessors and Mutators
private:
node<Type> *head;
node<Type> *tail;
};