# [206] 反转链表
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
这道题是一道非常典型的双指针使用场景。既然为反转链表,因此只需要将每个节点的next指针指向前一个节点即可,因此我们需要两个指针分别记录当前节点与前一个节点,交换当前节点指向后,前后指针依次向前遍历即可。循环时需要注意,后一个节点是需要优先记录的,这样才能够进入下一次循环前找到下一个节点的引用。
var reverseList = function(head) {
let pre = null;
let cur = head;
while (cur) {
const next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
}
return pre;
};