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



所以当我在leetcode上运行这段代码时,它会告诉我在ListNode中的Error-Found循环,但我一辈子都不知道为什么。请帮忙,提前谢谢!

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;

}

}

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

假设我们有以下链接列表:

A -> B -> C -> null

最初,prev = Acurr = Bnext = C

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

curr.next = prev设置了BA的链接,所以现在我们的列表是:

A -> B -> A -> …

接下来的两个分配将prev设置为B,将curr设置为A

CCD_ 11为真。CCD_ 12将CCD_ 13设置为CCD_。

我们已经完全失去了对列表其余部分(来自C(的跟踪,并且这个循环永远不会得到解决。

相关内容

  • 没有找到相关文章

最新更新