Some more advanced functions for simple linked lists such as reserving could be a good reference. The following code snippet is a simple function for reversing a simple linked list.
Please check also
struct node_t * reverse(struct node_t * head)
{
struct node_t * temp = head;
struct node_t * new_head = NULL;
struct node_t * next_node = NULL;
if (head == NULL)
return NULL;
while (temp != NULL)
{
next_node = temp->next;
temp->next = new_head;
new_head = temp;
temp = next_node;
}
return new_head;
}