反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
分析:
画图解释:
上述反转过程是个循环才能将链表整体反转,循环结束的条件是cur == null 即将整个链表遍历完时。
要注意,在curNext == null时,此时cur所指的结点就是新的头结点,所以要在这时让 newHead = cur
代码如下:
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode cur = head;
ListNode newHead = null;
while (cur != null) {
ListNode curNext = cur.next;
if (curNext == null) {
newHead = cur;
}
cur.next = prev;
prev = cur;
cur = curNext;
}
return newHead;
}