单链表逆转

91 阅读1分钟

假设链表为 1→2→3→∅1 \rightarrow 2 \rightarrow 3 \rightarrow \varnothing1→2→3→∅,我们想要把它改成 ∅←1←2←3\varnothing \leftarrow 1 \leftarrow 2 \leftarrow 3∅←1←2←3。

在遍历链表时,将当前节点的 next\textit{next}next 指针改为指向前一个节点。由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。在更改引用之前,还需要存储后一个节点。最后返回新的头引用。


function reverseLink(head){
    let prev=null,
        cur = head;
    while(cur){
        let next = cur.next;
            cur.next = prev;
            prev = cur;
            cur = next;
            
    }
    return prev;
}