原理
定义一个反转链表的头节点,遍历原链表,将每次遍历的元素放入反转链表的最前端
实现
力扣206.反转链表
// head节点是有值的,也就是默认是没有虚拟节点的
var reverseList = function (head) {
// 定义一个反转链表的头节点
let reverseHead = new ListNode()
// 用于遍历链表
let cur = head
// 用于在原链表中记录cur的下一个节点
let next = null
while (cur !== null) {
// 先记录cur的下一个节点,不然cur拿去给反转链表用的时候,会丢失在原链表的状态
next = cur.next
// 拿到cur后,放到反转链表的最前端
cur.next = reverseHead.next
reverseHead.next = cur
// cur返回原理链表
cur = next
}
// reverseHead为虚拟节点,所以需要返回reverseHead.next
return reverseHead.next
}