function listNode(val) {
this.val = val;
this.next = null;
}
var mergeTwoLists = function(l1, l2) {
// 将l2的每个节点值和l1节点值比较,将l2的节点复制为新的节点插入l1
while (l2) {
var prev = null;
// cur中存入l1的首个节点
var cur = l1;
// 如果cur存在且l2首个节点的值大于l1的首个节点的值
while (cur && l2.val > cur.val) {
// 就把l1的首节点存到prev中,l1的第二个节点存到cur中
prev = cur;
cur = cur.next;
}
var newNode = new listNode(l2.val);
// 将新节点指向l1的第二个节点
newNode.next = cur;
// 如果有prev,则将prev指向新节点;若没有,则新节点作为首个节点存入l1
if (prev) {
prev.next = newNode;
} else {
l1 = newNode;
}
// 将原来l2的下一个节点存入l2
l2 = l2.next;
}
return l1;
}
function add (node,data){
if(!node.next){
node.next = data
}else{
return add(node.next,data)
}
}
let a = new listNode('1');
add(a,new listNode('3'));
add(a,new listNode('5'));
add(a,new listNode('7'));
let b = new listNode('2');
add(b,new listNode('4'));
add(b,new listNode('6'));
add(b,new listNode('8'));
let c =mergeTwoLists(a,b);
while (c)
{
console.log(c.val);
c= c.next;
}
js合并两个有序的单链表135 246 =>123456
最新推荐文章于 2023-02-18 16:57:46 发布