19 Reverse Linked List 倒置链表

83 阅读1分钟

Reverse Linked List

关键设置两个指针 一个指向已经倒置链的头节点 newHead,一个指向旧链的头节点 head,

解题思路

  1. 假设倒置的新头节点是 newHead = null
  2. 倒置的过程需要知道是否全部倒置完了即未倒置的头节点是null值,所以循环的条件是 while (head !== null)
  3. 第一步保存未倒置节点的下一个节点 next = head.next
  4. 那么可以将第一个节点倒置指向新的头结点 head.next = newHead
  5. 更新一下倒置后的链的头结点 newHead = head
  6. 未倒置的节点头结点更新 head = next

代码

/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var reverseList = function (head) {
    let newHead = null
    while (head !== null) {
        let next = head.next
        head.next = newHead
        newHead = head
        head = next
    }
    return newHead
};