给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点。
/**
* Definition for singly-linked list.
* class ListNode {
* val: number
* next: ListNode | null
* constructor(val?: number, next?: ListNode | null) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
* }
*/
function reverseList(head: ListNode | null): ListNode | null {
let newListHead = null
while(head){
//1. 拷贝 val,next 直接取每次遍历的 pre_node
const newNode = new ListNode(head.val,newListHead)
newListHead = newNode
head =head.next
}
return newListHead
};更好的解:
/**
* Definition for singly-linked list.
* class ListNode {
* val: number
* next: ListNode | null
* constructor(val?: number, next?: ListNode | null) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
* }
*/
function reverseList(head: ListNode | null): ListNode | null {
let pre = null
let curr = head
while(curr){
//1. 暂存下一个节点
let next = curr.next
//2. 将下一个指向pre
curr.next = pre
//3. 更新 pre
pre = curr
//4. 前进
curr = next
}
return pre
};