When you identify a pointer as NULL, this means there's no instantiation of a struct of the type node that you have just defined associated with it yet. There is no struct of the type node in memory that it points to.
You can attach a struct of the type node to the pointer, for instance:
Code:
struct node
{
int value;
struct node *next;
};
node* first;
node myIntEnum;
myIntEnum.value = 20;
first = &myIntEnum;
But until you do so, there is no pointer to the next element in the enumeration. Once you have your first element of the enumeration - say "node firstNode;" - when you don't have your second yet, the value of firstNode.next will be NULL.
Once you have defined your type "node" as a "struct," I don't think you have to keep repeating that a node is a struct in declaring variables of the type node. You have to look this up to be sure, but once you have defined the type "node" you should just be able to call it just a node.
Also look into type definitions in C in terms of defining your own types.