链表

反转单向链表

该题目来自 LeetCode,题目需要将一个单向链表反转。思路很简单,使用三个变量分别表示当前节点和当前节点的前后节点,虽然这题很简单,但是却是一道面试常考题

以下是实现该算法的代码

  1. var reverseList = function(head) {
  2. // 判断下变量边界问题
  3. if (!head || !head.next) return head
  4. // 初始设置为空,因为第一个节点反转后就是尾部,尾部节点指向 null
  5. let pre = null
  6. let current = head
  7. let next
  8. // 判断当前节点是否为空
  9. // 不为空就先获取当前节点的下一节点
  10. // 然后把当前节点的 next 设为上一个节点
  11. // 然后把 current 设为下一个节点,pre 设为当前节点
  12. while(current) {
  13. next = current.next
  14. current.next = pre
  15. pre = current
  16. current = next
  17. }
  18. return pre
  19. };