1—>2—>3—>4—>5—>null
null—>5—>4—>3—>2—>1
第一步:p=head.next (newhead->null head->1 p->2)
第二步:(改变指针方向)
head.next=newhead (newhead->null head->1 p->2)
(null<—1 2—>3—>4—>5—>null)
第三步:(暂存newhead的头节点)
newhead=head (newhead->1 head->1 p->2)
第四步:(head指向原链表的下一个节点)
head=p (newhead->1 head->2 p->2)
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var reverseList = function(head) {//head头节点指针
let newhead=null;
let p=null;//用于暂存节点
while(head){
p=head.next;//暂存后继节点,便于稍后改变指针方向时能找到原链表
head.next=newhead;//反转指针方向
newhead=head;//暂存当前的节点
head=p;//访问下一节点
}
return newhead;
};
输入: 1—>2—>3—>4—>5—>null
输出: null—>5—>4—>3—>2—>1