当前位置: 首页 > 知识库问答 >
问题:

为什么我的反转链表的java代码会导致循环?

元嘉木
2023-03-14

所以当我在leetcode上运行这个代码时,它告诉我在列表节点中发现错误循环,但是我一生都不知道为什么。请帮忙,谢谢!

class Solution {
public ListNode reverseList(ListNode head) {
    if (head.next == null || head == null) return head;
    
    ListNode curr = head.next;
    ListNode prev = head;
    ListNode next = head.next.next;
    
    while (curr != null) {
        curr.next = prev;
        prev = curr;
        curr = next;
        if (curr != null) next = curr.next;
    }
    
    return prev;
    
}

}

共有2个答案

杨经武
2023-03-14

假设我们有以下链表:

A -> B -> C -> null

最初,prev=Acurr=B,和next=C

我们将追踪循环的第一次迭代

当前。next=prev设置BA的链接,所以现在我们的列表是:

A -> B -> A -> …

接下来的两个作业将prev设置为Bcurr设置为A

curr!=null为true。Next=curr.nextNext设置为B

我们已经完全忘记了列表中的其他部分(从C),这个循环将永远无法解决。

董权
2023-03-14

不管我知道为什么,因为我的头节点需要指向null,它仍然指向下一个元素,而不是null,所以在我的第一个和第二个节点之间有一个循环

 类似资料:
  • 作为一名链表数据结构的学习者,我正在练习Leetcode问题“反向链表”,我有自己的解决方案,但不知道为什么它是错误的,有专家可以分享一些指导吗?真的很感激! Leetcode问题: 反转单链接列表。 例: 输入:1- 输出: 5- 我的代码: 然而,上述解决方案是错误的,但可以通过在“temp.next=prev”和“head=head.next”之间切换位置进行纠正,如下所示: 对我来说,切换

  • 请问上述代码的第70行换成第71行注释的内容时,为什么会造成死循环。 题目: https://www.acwing.com/problem/content/174/

  • 问题内容: 这段代码使我凝视了几分钟: (这里的第137行) 我以前从未见过,而且我也不知道Java有一个“ loop”关键字(NetBeans甚至没有像关键字一样给它上色),并且它在JDK 6中可以很好地编译。 有什么解释? 问题答案: 它不是一个keyword,而是一个label。 用法:

  • 本文向大家介绍手写代码:反转链表 (Java 版)相关面试题,主要包含被问及手写代码:反转链表 (Java 版)时的应答技巧和注意事项,需要的朋友参考一下 参考回答:  

  • 本文向大家介绍手写代码:反转链表相关面试题,主要包含被问及手写代码:反转链表时的应答技巧和注意事项,需要的朋友参考一下 参考回答:  

  • 这似乎与对象没有被实例化有关,尽管我不太明白为什么。有人知道出什么事了吗?