I would not derive from the node class.
Have the node be generic and contain pointer to some data (word) instead of having the data directly in the node ?
class node
{
node* next;
word data;
};
class word
{
char** words;
};
Since you tagged this C++, I might suggest you use a standard C++ collection (std::vector) instead of a linked list.