1.最简单的,拼接两个链表,然后进行链表的冒泡排序。
if(p === null){
return pHead2;
}
一定要记得判断链表是否为空!!! 我在这卡了好一会
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function Merge(pHead1, pHead2)
{
var temp = 0;
var p = pHead1;
if(p === null){
return pHead2;
}
while(p.next != null){
p = p.next;
}
p.next = pHead2;
for(var node1 = pHead1;node1 != null;node1 = node1.next){
for(var node2 = node1.next;node2 != null;node2 = node2.next){
if(node1.val > node2.val){
temp = node2.val;
node2.val = node1.val;
node1.val = temp;
}
}
}
return pHead1;
}
2.尾插法建立新链表
依次判断两个链表的值,把较小的插入新链表,当循环结束时,如果其中一个表还有剩余,就把这个表后边的部分都连在新链表后面。
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function Merge(pHead1, pHead2)
{
var p = new ListNode(0),q = p;
while(pHead1 != null&&pHead2 != null){
if(pHead1.val < pHead2.val){
p.next = pHead1;
p = pHead1;
pHead1 = pHead1.next;
}
else{
p.next = pHead2;
p = pHead2;
pHead2 = pHead2.next;
}
}
if(pHead1 != null)
p.next = pHead1;
if(pHead2 != null)
p.next = pHead2;
return q.next;
}