Reverse Linked List
关键设置两个指针 一个指向已经倒置链的头节点 newHead,一个指向旧链的头节点 head,
解题思路
- 假设倒置的新头节点是 newHead = null
- 倒置的过程需要知道是否全部倒置完了即未倒置的头节点是null值,所以循环的条件是
while (head !== null) - 第一步保存未倒置节点的下一个节点 next = head.next
- 那么可以将第一个节点倒置指向新的头结点 head.next = newHead
- 更新一下倒置后的链的头结点 newHead = head
- 未倒置的节点头结点更新 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
};