Чтобы перевернуть двусвязный список, в чем разница между этими двумя кодами? Разве это не то же самое, что изменить следующий и предыдущий указатели?
void reverse(Node **head_ref)
{
Node *temp = NULL;
Node *current = *head_ref;
while (current != NULL)
{
temp = current->prev;
current->prev = current->next;
current->next = temp;
current = current->prev;
}
if(temp != NULL )
*head_ref = temp->prev;
}
void reverse(Node **head_ref)
{
Node *temp = NULL;
Node *current = *head_ref;
while (current != NULL)
{
temp = current->next;
current->next; = current->prev;
current->prev = temp;
current = current->next;
}
if(temp != NULL )
*head_ref = temp->next;
}
g++ -Wall -Wextra -g
, улучшите свой код C ++, чтобы не было предупреждений, затем используйте < отладчик href = "https://www.gnu.org/software/gdb/" rel = "nofollow noreferrer"> GDB, чтобы понять поведение исполняемого файла во время выполнения. - person Basile Starynkevitch   schedule 18.03.2021current->next; = current->prev;
- person churill   schedule 18.03.2021