206. Reverse Linked List
题目简介
/**
* @param {ListNode} head
* @return {ListNode}
*/
题目给我们一个链表头 head
要求我们翻转链表的元素并返回新的头指针
解题思路
我们只需要把链表所有元素的 next 指针指向前一个元素,就可以翻转整个链表
为了修改链表指针,我们需要三个变量: left 指向要修改的元素的前一个元素、mid 指向要修改的当前元素、right 指向要修改的下一个元素
在每次循环中,我们修改 mid.next,然后把 mid 赋值给 left,right 赋值给 mid ,直到 mid 指向 null
最后我们还需要修改一下 head 的 next 指向,将其指向 null
Javascript
/**
* 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) {
if(!head) {
return null
}
let left = head
let mid = head.next
while(mid) {
let right = mid.next
mid.next = left
left = mid
mid = right
}
head.next = null
return left
};