剑指 Offer 24. 反转链表
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
限制:
0 <= 节点个数 <= 5000
两个指针,一个存当前的cur,一个存之后的pre,往后移动,改变pre的指针,指向前面的cur即可,要预先存储一份pre之后的指针。
具体看代码:
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
class Solution {
public ListNode reverseList(ListNode head) {
ListNode cur = null;
ListNode pre = head;
while (pre != null){
ListNode t = pre.next;
pre.next = cur;
cur = pre;
pre = t;
}
return cur;
}
}