Я пытаюсь изменить двусвязный список, используя итеративный подход, и меня поражает та часть, где мой исходный список изменяется, хотя я не использую указатель на изменение стиля указателя исходного списка.
Это обратная функция, которую я использую, head
— это локальная переменная, объявленная в main, например Node* head = NULL;
, и она уже заполнена набором значений.
Node* reverse_iterative(Node* head)
{
if(head == NULL || head->next == NULL)
return head;
Node *prev, *current=head, *temp;
while(current != NULL)
{
current->prev = current->next;
current->next = temp;
temp = current;
current = current->prev;
}
return temp;
}
Вот как я использовал это в main :
Node* rev = NULL;
rev = reverse_iterative(head);
Вот результат, который я получил:
original list: 15 <=>25 <=>35 <=>45 <=>55 <=>65 <=>75 <=>
making the list actually reverse: 75 <=>65 <=>55 <=>45 <=>35 <=>25 <=>15 <=>
after reversing, the original list now: 15 <=>
Я не мог получить часть, в которой модифицировался мой исходный головной узел.