【发布时间】:2013-05-05 07:19:23
【问题描述】:
我正在研究链表的冒泡排序算法。它正在移动数据,但并没有完全正确地对数据进行排序。现在我只担心整数的链表。问题出在哪里?非常感谢。
void List::linkedListBubbleSort()
{
bool swap = true;
Node * temp = firstNode;
Node * current;
if(firstNode == 0)
{
cout << "List is empty." << endl;
return;
}
else
{
while(swap == true)
{
for(current = firstNode; current != NULL && current->next != NULL; current = current->next)
{
if(current->data > current->next->data)
{
swap = true;
temp->data = current->data;
current->data = current->next->data;
current->next->data = temp->data;
}
else
swap = false;
}
}
【问题讨论】:
-
我不会根据 0 检查指针。
nullptr可能比 NULL 更好。 -
您不能将现有节点用作交换的临时持有者。
-
@n.m.我应该将 current->data 存储在 int 中吗?
-
是的,试试看。另外,
else swap=false不正确,你应该在内循环之前做swap=false。 -
知道了,谢谢。
标签: c++ linked-list bubble-sort singly-linked-list