链表头指针指向头节点,尾指针指向null的有序指向。反转之后头节点应该是之前的尾结点。
反转思路
1.初始化一个pre结点null 作为反转之后的尾指针指向。
2.改变后续结点的nod.next指向为pre。
3.但是nod.next我们应当作备份,不然改变2种指向就找不到了,新建一个结点backup作为备份。
循环
1.做完第一波操作,backup结点和pre结点以及nod需要向后移动一位,nod就是我们备份的backup。
2.backup结点向后移动一位。
3.pre向后移动一位。
结束条件,备份backup为空就结束。
代码:
function ReverseList(pHead)
{
// write code here
if(!pHead){
return null;
}
let nod = pHead;//头节点
let backup = nod.next;//备份结点
let pre = null;//pre初始化结点
nod.next = pre;//nod指向pre
while(backup){
pre = nod; //pre向后移动一位
nod = backup; //nod向后移动一位
backup = backup.next;//backup向后移动一位
nod.next = pre;//改变指向
}
return nod;//结束
}