This defines a structure that contains a node (whatever that happens to be).
struct node root;
This defines a pointer to a node structure.
struct node *root;
In a linked list each item has to link to the next (and/or previous) item. The way to do this is by using a pointer to the item. You can then walk the list by taking each pointer in turn. For example something like the following code:
struct node* next = head; while (next != NULL)
{
next = next->root; }