题目描述
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
题目解答
定义3个指针
需要单独考虑当节点个数分别为1个、2个、大于等于3个的情况。
var reverseList = function(head) {
if(head == null){
return null;
}
var pBegin = head;
var pMid = head;
var pEnd = head;
// 节点个数为1
if(pBegin.next==null){
return pBegin;
}
pMid = pEnd.next;
// 节点个数为2
if(pMid.next == null){
pMid.next = pEnd;
pEnd.next = null;
return pMid;
}
pBegin = pMid.next;
pEnd.next = null;
while(pBegin!=null){
pMid.next = pEnd;
pEnd = pMid;
pMid = pBegin;
pBegin = pBegin.next;
}
pMid.next = pEnd;
//pEnd.next = null;
return pMid;
};