ListNode pre = null, curr = head;
while(curr != null){
ListNode next = curr.next;
curr.next = pre;
pre = curr;
curr = next;
}
pre
节点初始化为null
,因为链表的头节点在反转后会成为新的尾节点,所以它的next
应该指向null
。curr
节点初始化为链表的头节点head
,它是当前处理的节点。- 在每次迭代中,首先保存当前节点的下一个节点到
next
变量中,以便在修改指针连接后不会丢失链表的其余部分。 - 然后,将当前节点的
next
指针指向前一个节点pre
,实现反转。 - 然后将
pre
指向当前节点curr
,将curr
指向下一个节点next
,继续下一次迭代。 - 当
curr
变成null
,循环结束,此时pre
已经成为新链表的头节点。