反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
(题目转自leetcode)
解:
// 循环
var reverseList = function(head) {
let currentNode = head;
let prevNode = null;
while(currentNode) {
const nextNode = currentNode.next;
currentNode.next = prevNode;
prevNode = currentNode;
currentNode = nextNode;
}
return prevNode;
};
// 递归
var reverseList2 = function(head) {
if(head === null || head.next === null) {
return head;
}
const r = reverseList(head.next);
head.next.next = head;
head.next = null;
return r;
};