题目:输入一个链表,反转链表后,输出新链表的表头。
输入:1→2→3→4→5
输出:5→4→3→2→1
解题思路:
定义pNode、pNext、pre三个变量。
1、pNext 等于 pNode.next也就是第二个节点。
2、pNode.next(第二个节点)等于pre这个桥梁
3、pre 等于 pNode,使得第二个节点指向第一个节点。
4、pNode 等于 pNext。让三个变量都等于第二个节点,从而进行下一次变换
最终代码如下:
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function ReverseList(pHead)
{
pNext = pHead;
pNode = pHead;
var pre = null
while(pNode){
pNext = pNode.next;
pNode.next = pre;
pre = pNode;
pNode = pNext;
}
return pre;
}
解法二:
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function ReverseList(pHead)
{
let newHead = null;
while(pHead){
let tmpNode= newHead;
newHead = new ListNode(pHead.val);
newHead.next = tmpNode;
pHead = pHead.next;
}
return newHead;
}