输入一个链表,返回其反转后的链表
例如:
输入 2 -> 3 -> 4
输出 4 -> 3 -> 2
- 应该定义一个变量用于存储链表的头部节点, 以头部节点为基准节点;
- 将基准节点的下一个节点挪到头部作为头节点;
- 当基准节点的
next
为null
,则其已经成为最后一个节点,链表已经反转完成;
/**
* Definition for singly-linked list.
*/
function ListNode(val) {
this.val = val;
this.next = null;
}
function reverseList(list) {
let currentNode = null // 定义一个变量用于存储当前节点
let head = list // 定义一个变量用于存储链表的头部节点
while (list && list.next) {
currentNode = list.next // 将当前节点设置为链表的next
list.next = currentNode.next // 链表的next为当前节点的next
currentNode.next = head // 再将当前节点的next指向链表的头部节点
head = currentNode // 链表的头部节点设置为当前节点
}
return head
}
测试代码
let list = { val: 2, next: { val: 3, next: { val: 4, next: null } } }
reverseList(list)
{ val: 4, next: { val: 3, next: { val: 2, next: null } } }