Я пытаюсь сортировать поочередно круговой связанный список после каждого редактирования. Но мой код не работает. Я основывал его на алгоритме сортировки выбора. Я делаю это часами, но, похоже, не могу получить правильный код.Сортировка одиночно кругового связанного списка
void editList(node *head, int value, int newValue)
{
node *traverser = head;
do {
traverser = traverser -> next;
}while(traverser -> data != value);
traverser -> data = newValue;
node *index;
node *selection;
node *temp = new node;
for(index = head; index -> next != head; index = index -> next) {
for(selection = head; selection -> next != head; selection = selection -> next) {
if(index -> data > selection -> data) {
temp -> data = index-> data;
index -> data = selection -> data;
selection -> data = temp -> data;
}
}//End of outer loop
}//End of sorting
return;
}//End of editList()
Предполагая, что список начинается отсортированный, так как только один узел Editted в момент времени, почему бы не удалить узел из списка, а затем повторно вставить его обратно в список в правильном месте? – rcgldr