Почему мой алгоритм сортировки пузырей не сортирует связанный список? Когда задан список и вызывается метод, он выдает тот же список. Что случилось с моей текущей логикой внутри цикла for? Структура узлаbubble сортировать связанный список не сортировать
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' – AlexD
Замените содержимое' if' на 'std :: swap (current-> data, nextElement-> data)', это будет решить проблему. – dasblinkenlight