キーではなくポインターのみを操作して、バブルソートを使用して単一リンクリストをソートしようとしています。
以下は 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;
}
キー (データ) がスワップされるようにコードを変更すると、関数は正常に動作しますが、何らかの理由でポインターのみを操作して動作させることができません。