为什么链表适用于节点名称,但不适用于指针?

问题描述 投票:0回答:1

我正在编写反转链表的代码。这是代码

Node* reverseLinkedList(Node *head)
{
    Node* temp = head;
    Node* prev = NULL;
    while(temp != nullptr) { 
        Node* next = temp->next;
        temp->next = prev;
        prev = temp;
        temp = next;
    }
    return prev;
    // Write your code here
}

而且效果非常好。但是,由于下一个节点只是 temp->next,为什么我不能使用

Node* reverseLinkedList(Node *head)
{
    Node* temp = head;
    Node* prev = NULL;
    while(temp != nullptr) { 
        Node* next = temp->next;
        temp->next = prev;
        prev = temp;
        temp = temp->next;
    }
    return prev;
    // Write your code here
}

以上现在不起作用。我希望能清楚地了解节点在这里如何工作。谢谢!

c++ linked-list reverse
1个回答
0
投票

这两个代码示例并不等效。

在第一个中,您将 temp->next

current
值存储在变量
next
中。这样做的原因是您将在下一行用
temp->next = prev;
覆盖该值。如果您没有在某个地方复制它,那么它就会丢失。

在第二个示例中,您可以清楚地看到如果您忘记修改了该值会发生什么情况。它被

prev
覆盖,然后当您前进到“下一个”节点时,您实际上前进到
prev
,它始终是
NULL
并且循环终止。

© www.soinside.com 2019 - 2024. All rights reserved.