void NodeList::sortNodeAscending()
{
Node* swap = NULL;
Node* saveLink = NULL;
for(Node* firstPointer = head; firstPointer;firstPointer = firstPointer->next)
for(Node* secondPointer = firstPointer->next; secondPointer;secondPointer = secondPointer->next)
{
if((secondPointer->studentId)<(firstPointer->studentId))
{
swap =firstPointer;
saveLink = secondPointer->next;
firstPointer = secondPointer;
secondPointer = swap;
firstPointer->next = secondPointer;
secondPointer->next = saveLink;
}
}
}
Это мой код для сортировки, но проблема в том, что у меня есть после сортировки, все значения верны, но голова не изменяется и не сортируется.Сортировка отдельно Связанный список
Выход:
{ 5, 0, 1, 2, 3, 4, 12, 15}
Все элементы сортируются кроме первого узла.
Примечание: Я уже проверял вопрос по ссылке ниже и отличается от моего вопроса. Sorting a Singly Linked List With Pointers
Ищите место, где вы назначаете новое значение 'head'. – molbdnilo
Используйте отладчик и небольшой набор чисел, чтобы узнать, где изменяется указатель 'head'. –
Я не могу изменить голову внутри цикла, потому что, если я буду держать голову, она будет меняться до последней итерации, я просто хочу ее изменить один раз, когда я получу значение smalles. Именно по этой причине я использовал два указателя для их замены, но сохранил их значения, чтобы позже я мог подключать новые измененные указатели. – user45524