反转链表(Java 迭代 易于理解)
迭代法
废话不多说,直接进入正题。
我们现在想要对上面这个链表进行反转,
变成下面这种形式
其实这种题思路很明显了,无非就是换一下1,2两个链表节点的指向。
初始状态,cur 负责处理每个节点的指向,pre是cur 要指向的前面那个节点,tmp 我们赋值为cur.next
为什么我们需要tmp 这个变量呢?
根据节点的特性,当我们把 cur.next 指向pre 的时候,我们就找不到 cur 下一个该往哪里走了。
走完第一轮循环
public ListNode reverse(ListNode head) {
ListNode pre = null,tmp;
ListNode cur = head;
while (cur != null) {
tmp = cur.next;
cur.next = pre;
pre = cur;
cur = tmp;
}
return pre;
}