链表翻转,循环版:
function reverseList(head) {
if(!head) {
return head
}
if(!head.next) {
return head
}
var p1 = null
var p2 = null
var p3 = head
while(p3) {
p1 = p2
p2 = p3
p3 = p3.next
p2.next = p1
}
return p2
}
链表翻转,递归版:
function reverseList(head) {
if(!head || !head.next) {
return head
}
var tail = head.next
head.next = null
var newHead = reverseList(tail)
tail.next = head
return newHead
}
链表的合并:
var mergeTwoLists = function(l1, l2) {
if(!l1) {
return l2
}
if(!l2) {
return l1
}
var head
if(l1.value > l2.value) {
head = l2
l2 = l2.next
}else {
head = l1
l1 = l1.next
}
head.next = mergeTwoLists(l1,l2)
return head
};