Я пытаюсь изменить один связанный список с этим кодом, но его не работает должным образом. Следующий код не работает в том случае, когда размер списка равен двум, в противном случае он работает хорошо. Я не могу найти ошибку в этом коде и потратил много времени на нем. Пожалуйста, скажите мне, что случилось с этим кодом?Как отменить односвязный список на C++?
void list::reverse()
{
node *current = head;
if (current->next != NULL)
{
node *move = current->next;
while (move->next != NULL)
{
node *temp = move->next;
move->next = current;
if (current == head)
{
current->next = NULL;
}
current = move;
move = temp;
}
if (move->next == NULL)
{
move->next = current;
if (current == head)
{
current->next == NULL;
}
head = move;
}
}
}
Когда вы попадаете на полпути вниз по своему списку, что, по-вашему, имеет значение следующего? – UKMonkey
Что вы наблюдали при проверке кода с помощью отладчика? –
Элемент управления не используется в этих блочных операторах, если размер списка равен двум. –