Your question is unclear, but I'll take a shot at it. In a linked list, HEAD is usually a var name, not a data type. HEAD is usually a pointer or possibly a data structure that serves as the pointer to the first element in the linked list.
In your code, node1 serves as a head. However, if you wanted to insert a new node at the beginning of the list, you'd have to remember that it is the new head.
Additionally, the method that you are using requires naming every node. The common way to implement a linked list of nodes is to create nodes that are not stored in named variables, but have their addresses stored in a pointer in the previous node.
For example, in your code, you'd add a head var to point at the head of the list and create nodes as needed:
node* head = NULL; // create the head with no content.
head = malloc(sizeof(node)); // creates memory space for the head node
//the previous two lines can be combined.
head->next = malloc(sizeof(node)); //adds the next node
node* temp = NULL; //creates a temp var for moving through the list.
// you don't want to change head when walking through the list.
// if you insert a node at the front of the list, then you would update head
There's more, but that's all covered in lectures and shorts.
If this answers your question, please click on the check mark to accept. Let's keep up on forum maintenance. ;-)