I could not grasp the reason we create pointers of nodes instead of node structures when we try to implement linked lists as here: 

```
typedef struct node {
    int val;
    struct node * next;
} node_t;

```

and

```
node_t * head = NULL;
head = malloc(sizeof(node_t));
if (head == NULL) {
    return 1;
}

head->val = 1;
head->next = NULL;

```

here, why do we declare nodes such as `head` as pointers of structures instead of direct structures>