Я пытаюсь отсортировать односвязный список, используя пузырьковую сортировку, манипулируя ТОЛЬКО указателями, без ключей.
Следующее застревает в цикле for и бесконечно зацикливается. Я не понимаю, почему это так. Может ли кто-нибудь объяснить мне, почему конец списка не найден?
Node* sort_list(Node* head)
{
Node * temp;
Node * curr;
for(bool didSwap = true; didSwap; ) {
didSwap = false;
for(curr = head; curr->next != NULL; curr = curr->next) {
if(curr->key > curr->next->key) {
temp = curr;
curr = curr->next;
curr->next = temp;
didSwap = true;
}
cout << curr->next->key << endl;
}
}
return head;
}
Если я изменю код так, чтобы ключи (данные) поменялись местами, то функция работает правильно, но по какой-то причине я не могу заставить ее работать, манипулируя только указателями.