# [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;
};