反轉鏈表
題目描述:
輸入一個鏈表,反轉鏈表後,輸出新鏈表的表頭。
問題分析:
利用三指針,通過鏈表的遍歷完成順序的反轉
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;
}
總結:
通過三指針,即可完成鏈表順序的反轉,核心在於指針之間變化的指向關係,順序賦值,逐步向前