With the help of GDB, my professor, and a friend, I managed to finally get a working Insertion Sort function.
Code:
void Insertion_sort(List * list)
{
Node * index;
Node * node;
Node * temp;
Node * temp2;
for(index = list->first; index != NULL && index->next != NULL; index = index->next)
{
if(index->ID > index->next->ID && &index->next->ID != NULL)
{
node = remove_node(list, index->next);
temp = index;
while(temp->ID > node->ID)
{
if(temp != list->first)
{
temp = temp->prev;
} else {
break;
}
}
if(temp->ID < node->ID)
{
temp2 = temp->next;
node->prev = temp;
node->next = temp2;
temp->next = node;
temp2->prev = node;
} else {
node->next = temp;
list->first = node;
temp->prev = node;
}
index = index->prev;
}
if(index == list->last)
break;
}
}