我正在尝试使用迭代方法来反转双向链表,即使我没有使用指向原始列表的指针样式修改的指针,我也对正在修改原始列表的部分感到震惊。
这是我正在使用的反向函数,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 <=>
我无法获得修改原始头节点的部分。