我试图通过仅操作指针而不是键来使用冒泡排序对单链表进行排序。
以下内容卡在 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;
}
如果我更改代码以便交换键(数据),则该函数可以正常工作,但由于某种原因,我无法通过仅操作指针来使其工作。