我正在尝试使用 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;
}
}
我不明白为什么循环在这里只执行一次。我做错了什么吗?
答案 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
}