反转链表时遇到问题

时间:2021-05-30 16:51:18

标签: linked-list reverse

我正在尝试使用 java 反向链接列表并编写下面的代码。

class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode cur=head,prev=null,newHead=null;
        
        while(cur!=null)
        {
          newHead=cur;
          newHead.next=prev;
            prev=newHead;
            System.out.println(1);
            cur=cur.next;
    
        }
        
        return newHead;
        
        
    }
}

我不明白为什么循环在这里只执行一次。我做错了什么吗?

1 个答案:

答案 0 :(得分:1)

发生这种情况是因为您已将 cur.next 更改为分配 newHead.next=prev;,使其成为 null。意识到此时 newHead 引用了与 cur 相同的对象。

您应该在此更改发生之前保存 cur.next 的原始值:

ListNode cur = head, prev = null, newHead = null, next;
    
while (cur != null)
{
    newHead = cur;
    next = cur.next; // <--- save original value of `cur.next`
    newHead.next = prev;
    prev = newHead;
    cur = next;  // <--- use that original value here
}