Я пытаюсь сортировать связанный список. У меня есть узел, называемый head, и он указывает на следующий узел и т. Д.Сортировка узлов (Linked-list) C++
Но когда я пытаюсь сортировать узлы по значению, которое они несут, я получаю сортировку, потому что вижу, что она распечатывает материал в if -statement, но я не вернусь к связанному списку. Где я неправ?
Node* head;
void sortlist(){
Node * runner = head;
Node * runner2;
for(runner = head; runner->next != NULL; runner = runner->next){
for(runner2 = runner->next; runner2->next != NULL; runner2 = runner2->next){
if(runner->freq < runner2->freq){
cout<< runner->freq<< " is LT "<<runner2->freq<< endl;
Node * temp = runner;
runner = runner2;
runner2 = temp;
}
}
}
head = runner;
}
Я только возвращаю первый узел.
'head = runner;'. Мне даже не нужно углубляться, чтобы понять, что это ложь. – UmNyobe
Переключение, похоже, работает, хотя я думаю, что просто возвращаю неправильный узел, или, может быть, я потерял ссылку? –
Обмен не работает. Вам нужно подменять 'runner-> freq' и' runner2-> freq', а не сами указатели. Плюс вам нужно получить алгоритм правильно, даже если вы поменяли правильные вещи, этот код не сортирует. – john