Мой код работает так неправильно! После ввода и сортировки некоторых номеров списка, для некоторых номеров он не работает и удаляет старый узел или не отображает их. Не могу понять, что случилось.Я пытаюсь сортировать один связанный список
Иногда кажется, что он работает нормально, например: я ввел 4, 6, 7, 2, и он действительно показал себя в отсортированном списке. но после ввода 3 он не отобразил 3 в списке.
Вот мой код:
if(head == NULL)
{
head = info;
last = info;
info->next = NULL;
}
else
{
if(info->number > last->number)
{
last->next = info;
last = info;
info->next = NULL;
}
else if (info->number < head->number)
{
info -> next = head;
head = info;
}
prev = head;
for(temp = head-> next ; temp!= NULL; temp = temp->next)
{
prev = prev->next;
if(info->number >temp->number)
{
temp->next = info;
}
else
{
temp-> prev = info;
info = prev;
}
}
}
Отладка - это навык, который вам нужно изучить. Лучше всего начать сейчас. Установите точку останова и начните выполнять код, чтобы узнать, как вы не выполнили свои предположения. Я ожидаю увидеть связанный список ADT и отдельный метод сортировки. Я не могу сказать, плохо ли это ваш список или его реализация. – duffymo
@Nodeum Я думаю, что лучше использовать сортировку вставки для списков. –
Я никогда не использую отладки раньше, но пришло время использовать спасибо @Vlad из Москвы. Я просто хотел использовать свой собственный альгортм, но, похоже, он не работает, спасибо за совет. – Nodeum