微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

反转链表时遇到问题

如何解决反转链表时遇到问题

我正在尝试使用 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;
        
        
    }
}

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

解决方法

发生这种情况是因为您已将 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
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。