劍指offer-js 反轉鏈表

反轉鏈表

題目描述:

輸入一個鏈表,反轉鏈表後,輸出新鏈表的表頭。

問題分析:

利用三指針,通過鏈表的遍歷完成順序的反轉

1,創建前後指針
2,用next指針指向剩餘鏈表的頭部,進行保存;
3,讓當前遍歷到的鏈表結點與鏈表斷開,再去連接鏈表頭部pre;
4,接着更新pre,讓它指向當前結點;
5,讓鏈表頭部參數指向下一個結點。

代碼展示:

/*function ListNode(x){
    this.val = x;
    this.next = null;
}*/
function ReverseList(pHead)
{
    // write code here
    let pPre=null,
        pNext=null;
    while(pHead!==null){
        pNext=pHead.next;    //當前節點的下一個節點
        pHead.next=pPre;    //完成反轉
        pPre=pHead;    //pPre往前走
        pHead=pNext;    //當前節點往前走
    }
    return pPre;
}

總結:

通過三指針,即可完成鏈表順序的反轉,核心在於指針之間變化的指向關係,順序賦值,逐步向前
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章