Я сталкиваюсь с какой-то ошибкой времени выполнения при попытке проверить мой метод сортировки. В моей реализации я пытаюсь найти наименьший узел в связанном списке... После этого я проверяю, является ли наименьший узел первым узлом, последним узлом или просто посередине. После тестирования этих случаев я пытаюсь добавить наименьшее значение в новый связанный список. Я делаю это, чтобы все значения были отсортированы, а затем указываю голову (частная переменная в моем классе) на недавно отсортированный список... Если мне нужно включить файл заголовка или что-то еще, пожалуйста, просто дайте мне знать. Любая помощь приветствуется.
Чтобы было ясно, фактического сообщения об ошибке нет, программа просто завершается, когда я вызываю свою функцию сортировки.
void Linkedlist::sort()
{
Node * current = head;
Node * smallest = head;
Node * newHead = NULL;
Node * newTail = NULL;
while(head != NULL)
{
current = head;
while(current != NULL)
{
if(current->elem < smallest->elem)
{
smallest = current;
}
current = current->next;
}
//smallest is first node
if(smallest->prev == NULL)
{
head = head->next;
head->prev = NULL;
}
//smallest is last node
else if(smallest->next == NULL)
{
tail = tail->prev;
tail->next = NULL;
}
else
{
smallest->prev->next = smallest->next;
smallest->next->prev = smallest->prev;
}
//adding smallest to a new linked list
if(newHead == NULL)
{
smallest->prev = NULL;
smallest->next = NULL;
newHead = smallest;
}
else
{
smallest->prev = newTail;
smallest->next = NULL;
newTail->next = smallest;
newTail = smallest;
}
}
//point head to new linked list
head = newHead;
}