输入一个链表,反转链表后,输出新链表的表头。
Example:

1
2
Input: 1->2->3->4->5->NULL
Output: 5->4->3->2->1->NULL

传送门


反转的过程需要提前准备好下个节点的,用到两个指针,cur 和 pre 指向新节点和用于存放原本的下个节点

1
2
3
4
5
6
7
8
9
10
ListNode reverseList(ListNode head) {
ListNode cur = head, pre = null;
while (cur != null) {
ListNode next = cur.next; // 提前准备好指向下个节点
cur.next = pre;
pre = cur;
cur = next;
}
return pre;
}