劍指 Offer 24. 反轉連結串列

Jungle鬆發表於2021-01-03

劍指 Offer 24. 反轉連結串列

題目描述:

定義一個函式,輸入一個連結串列的頭節點,反轉該連結串列並輸出反轉後連結串列的頭節點。

示例:

輸入: 1->2->3->4->5->NULL
輸出: 5->4->3->2->1->NULL

思路:

通過prev固定反轉後連結串列頭,通過head來反轉,通過next指向剩下的連結串列頭部

程式碼:

   var reverseList = function(head) {
    //     if(head==null||head.next==null) return head;
    //     var prev=null;
    //     var next=null;
    //     while(head!=null){
    //         next=head.next;
    //         head.next=prev;
    //         prev=head;
    //         head=next;
    //     }
    //     return prev;

    // var prev = null,cur=head,temp;
    // while(cur){
    //     temp = cur.next;//修改前先記住下一個節點
    //     cur.next = prev; //改變指向,第一個節點prev是null,
    //     prev = cur; //記錄前一個節點,供下次迴圈使用
    //     cur = temp; // cur通過temp指向下一節點
    // }
    // return prev;//cur會一直迴圈直到null


    [cur, pre] = [head, null];
    while(cur) [cur.next, pre, cur] = [pre, cur, cur.next];
    return pre;

};

相關文章