反转链表
小于 1 分钟
反转链表
给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点。

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
代码实现
/**
* 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 || !head.next) return head
let cur = head
let pre = null // 定义上一个节点,开始的时候为null
while(cur){
// 保存下一个节点
const next = cur.next
// 让本节点指向上一个节点,断开与原先的指向
cur.next = pre
// 上一个节点改为本节点
pre = cur
// 本节点改为下个节点
cur = next
}
return pre
};
pre
节点?
为何返回返回比如最后一次循环是cur
是节点5
,运行完毕pre
将会保存5节点
, cur
保存的是null
节点