所以当我在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 = A
、curr = B
和next = C
。
我们将追踪您循环的第一次迭代:
curr.next = prev
设置了B
到A
的链接,所以现在我们的列表是:
A -> B -> A -> …
接下来的两个分配将prev
设置为B
,将curr
设置为A
。
CCD_ 11为真。CCD_ 12将CCD_ 13设置为CCD_。
我们已经完全失去了对列表其余部分(来自C
(的跟踪,并且这个循环永远不会得到解决。