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; }