Je n'ai pas trop regardé ton code en détail, mais si ton algo part en boucle infinie, c'est probablement car "Pop->next->next==NULL" ne se produit jamais.
Peut-être que la séparation de liste ne met pas NULL dans tous les cas à la fin de chaque liste ?
Alors vérifie ta fonction, par exemple si tout ce qui est inférieur au pivot par dans une liste, mais si le dernier élément de cette sous-liste a le "next" qui pointe su un élément de l'éautre liste et inversement, il peut se produire ce phénomène.
Il faut aussi que les "next" soient bien initialisés à NULL lorsque tu crée un nouveau "Population".