【发布时间】:2014-11-15 21:46:54
【问题描述】:
为什么我的冒泡排序算法不对链表进行排序? 当给定一个列表并调用该方法时,它将输出相同的列表。我的 for 循环中的当前逻辑有什么问题?
private:
IntNode *head, *tail;
节点结构:
struct IntNode
{
int data;
IntNode * next;
};
冒泡排序法:
void NodeSLList::SortList()
{
if (head == NULL || head->next == NULL)
return;
IntNode * current = head;
IntNode * nextElement = current->next;
IntNode * temp = NULL;
int changed = 1;
while (changed)
{
changed = 0;
for (current; (current != NULL) && (nextElement = NULL); )
{
if (current->data > nextElement->data)
{
temp = current->next;
current->next = nextElement->next;
nextElement->next = temp;
changed = 1;
}
current = current->next;
nextElement = nextElement->next;
}
}
}
【问题讨论】:
-
好像是赋值运算符:
nextElement = NULL -
将
if的内容替换为std::swap(current->data, nextElement->data),即可解决问题。
标签: c++ linked-list logic bubble-sort